### SQL语句个人学习笔记 #### 一、创建表、插入数据、查询数据与表连接 **1. 创建表** 在SQL中,我们通常通过`CREATE TABLE`命令来定义一个新的表,并设定表中的各个字段(列)及其属性。在本笔记中,作者创建了两张表:`tb_1` 和 `tb_2`。 - **创建表 `tb_1`:** ```sql DROP TABLE tb_1; -- 如果表已存在,则删除它 CREATE TABLE tb_1 ( id INT NOT NULL PRIMARY KEY, -- 定义主键字段,不可为空且唯一 username VARCHAR(50) NOT NULL, -- 用户名,不可为空 repassword VARCHAR(60) NOT NULL, -- 密码,不可为空 pid INT NOT NULL -- 另一个整型字段,不可为空 ); ``` - **创建表 `tb_2`:** ```sql DROP TABLE tb_2; -- 如果表已存在,则删除它 CREATE TABLE tb_2 ( id INT NOT NULL PRIMARY KEY, -- 主键字段,不可为空且唯一 username VARCHAR(50) NOT NULL, -- 用户名,不可为空 tem VARCHAR(40) NOT NULL -- 一个字符型字段,不可为空 ); ``` **2. 插入数据** 为了使表具有实际的数据意义,我们需要向表中插入数据。在本笔记中,通过`INSERT INTO`命令实现了这一点。 - **插入到表 `tb_1`:** ```sql INSERT INTO tb_1 (id, username, repassword, pid) VALUES (2, 'linqunwei2', '123456', 5); INSERT INTO tb_1 (id, username, repassword, pid) VALUES (3, '123', '123456', 5); ``` - **插入到表 `tb_2`:** ```sql INSERT INTO tb_2 (id, username, tem) VALUES (3, '3333', '123456'); ``` **3. 查询数据** 查询数据是数据库操作中最常见的需求之一。这里主要使用`SELECT`命令来展示表中的所有数据。 - **查询表 `tb_1`:** ```sql SELECT * FROM tb_1; ``` - **查询表 `tb_2`:** 注意,在笔记中作者误将`tb_2`写成了`tb_1`。正确的查询语句应该是: ```sql SELECT * FROM tb_2; ``` **4. 表连接** 表连接是将两个或多个表中的行合并为一个结果集的过程。这可以通过使用不同的`JOIN`类型来实现,例如内部连接(`INNER JOIN`)、外部连接(包括左连接`LEFT OUTER JOIN`、右连接`RIGHT OUTER JOIN`)以及完全连接`FULL OUTER JOIN`。 - **内部连接 (`INNER JOIN`):** 内部连接返回两个表中具有匹配值的行。 ```sql SELECT * FROM tb_1 INNER JOIN tb_2 ON tb_1.username = tb_2.username ORDER BY tb_1.id; ``` - **左连接 (`LEFT OUTER JOIN`):** 左连接返回左表中的所有行以及右表中匹配的行;如果没有匹配,则右表中的列显示为`NULL`。 ```sql SELECT * FROM tb_1 LEFT OUTER JOIN tb_2 ON tb_1.username = tb_2.username ORDER BY tb_1.id; ``` - **右连接 (`RIGHT OUTER JOIN`):** 类似于左连接,但这次返回的是右表中的所有行及左表中匹配的行。 ```sql SELECT * FROM tb_1 RIGHT OUTER JOIN tb_2 ON tb_1.username = tb_2.username ORDER BY tb_1.id; ``` - **完全连接 (`FULL OUTER JOIN`):** 返回两个表中的所有行,没有匹配的行用`NULL`填充。 ```sql SELECT * FROM tb_1 FULL OUTER JOIN tb_2 ON tb_1.username = tb_2.username ORDER BY tb_1.id; ``` #### 二、创建触发器 触发器是一种特殊类型的存储过程,当特定事件发生时(如数据被插入、更新或删除),由系统自动调用执行。在本笔记中,作者创建了一个名为 `update_pk` 的触发器。 - **触发器 `update_pk`:** ```sql DROP TRIGGER update_pk; CREATE TRIGGER update_pk ON tb_1 AFTER UPDATE AS IF UPDATE([username]) BEGIN UPDATE tb_2 SET tb_2.username = 'aaaaaaaaa' FROM tb_2, DELETED d, INSERTED i WHERE tb_2.id = d.id; END ``` **触发器功能概述:** - 当对 `tb_1` 表中的 `username` 字段进行更新操作时,该触发器会被激活。 - 触发器将检查是否有更新操作发生。 - 如果确实发生了更新,那么 `tb_2` 表中的对应记录(基于 `id` 的匹配)的 `username` 字段将被更新为 `'aaaaaaaaa'`。 #### 小结 通过本篇笔记的学习,我们可以了解到如何创建表、插入数据、查询数据以及进行表连接等基本操作。此外,还涉及到了高级的触发器创建和使用技巧。这些知识点对于理解SQL的基础操作和进阶应用都非常重要。
- 粉丝: 1
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助