MySQL基础教程---Chapter 10 使用多个表

it2024-07-09  41

以下为个人作为初学者的自己看书总结,访客看到有不足或差错之处,欢迎交流指正。

day7 2020/10/21

目录

10.1 显示多个表的记录10.1.1 显示多条提取结果10.1.2 使用 UNION 合并 3 个以上表10.1.3 按条件合并多条提取结果并显示10.1.4 合并显示多条提取结果(允许重复) 10.2 内连接 (类似于求交)10.2.1 连接两个表10.2.2 选择列进行显示,USING 使 ON 后更容易阅读10.2.3 通过 WHERE 设置条件从连接表中提取记录 10.3 外连接 (类似于求并)10.4 自连接10.5 子查询 (从 SELECT 的记录中 SELECT )10.5.1 显示最大值10.5.2 提取大于等于平均值的记录10.5.3 使用 IN10.5.4 EXISTS / NOT EXISTS

10.1 显示多个表的记录

UNION

10.1.1 显示多条提取结果
SELECT 列名1 FROM 表1 UNION 列名2 FROM 表2; 加括号更易理解 如:(SELECT * FROM tb1) UNION (SELECT * FROM tb2) ;
10.1.2 使用 UNION 合并 3 个以上表
如:(SELECT * FROM tb WHERE empid='A102') UNION (SELECT * FROM tb WHERE empid='A103') UNION (SELECT * FROM tb WHERE empid='A104') UNION (SELECT * FROM tb WHERE empid='A107') ; 等价于 SELECT * FROM tb WHERE empid IN ('A102','A103','A104','A107');
10.1.3 按条件合并多条提取结果并显示
使用 UNION 合并提取多条记录时,在各个命令最后加上 "WHERE 条件" 如: (SELECT empid FROM tb WHERE sales>=200) UNION (SELECT empid FROM tb1 WHERE age>=30);
10.1.4 合并显示多条提取结果(允许重复)
UNION ALL

10.2 内连接 (类似于求交)

JOIN

10.2.1 连接两个表
SELECT 列名 FROM 表1 JOIN 要连接的表2 ON 表1的列 = 表2的列 ; 如:SELECT * FROM tb JOIN tb1 ON tb.empid = tb1.empid;
10.2.2 选择列进行显示,USING 使 ON 后更容易阅读
如: SELECT tb.empid, tb1.name, tb.sales FROM tb JOIN tb1 ON USING(empid);
10.2.3 通过 WHERE 设置条件从连接表中提取记录
使用了别名,两个表选择列合并,USING,WHERE设置条件选择 如: SELECT x.empid AS 员工号, y.name AS 姓名, x.sales AS 销售额 FROM tb AS x JOIN tb1 AS y USING(empid) WHERE x.sales>=100;

10.3 外连接 (类似于求并)

LEFT (OUTER) JOIN RIGHT (OUTER) JOIN

具体使用和内连接一致, LEFT JOIN; RIGHT JOIN 替换 JOIN

10.4 自连接

自连接的典型示例—排序

10.5 子查询 (从 SELECT 的记录中 SELECT )

10.5.1 显示最大值
如: SELECT * FROM tb WHERE sales IN (SELECT MAX(sales) FROM tb);
10.5.2 提取大于等于平均值的记录
如: SELECT * FROM tb1 WHERE age >= (SELECT AVG(age) FROM tb1);
10.5.3 使用 IN
SELECT 显示的列 FROM 表名 WHERE 列名 IN (通过子查询 SELECT 语句提取的列); 如: SELECT * FROM tb1 WHERE empid IN (SELECT empid FROM tb WHERE sales>=200);
10.5.4 EXISTS / NOT EXISTS

接下来一系列会每天记录《MySQL基础教程》的学习总结。挑战半个月看书,动手,写博客

最新回复(0)