一. 合并结果集
-
要求被合并的表中,类的类型和列数相同
-
UNION,去除重复行
-
UNION ALL,不去除重复行
SELECT * FROM cd UNION ALL SELECT * FROM ab;
二. 连接查询
1.分类
- 内连接
- 外连接
- 左外连接
- 右外连接
- 全外连接(MySQL不支持)
- 自然连接
2.内连接
- 方言:SELECT * FROM 表1 别名1, 表2 别名2 WHERE 别名1.xx=别名2.xx;
- 标准: SELECT * FROM 表1 别名1 INNER JOIN 表2 别名2 WHERE 别名1.xx=别名2.xx;
- 自然: SELECT * FROM 表1 别名1 UATURAL JOIN 表2 别名2;
3. 外连接
- 左外:SELECT * FROM 表1 别名1 LEFT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx;
左表记录无论是否满足条件都会查询出来,而右表只有满足条件才能出来。左表中不满足条件的记录,右表部分都为NULL
- 左外自然:SELECT * FROM 表1 别名1 NATURAL LEFT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx;
- 右外:SELECT * FROM 表1 别名1 RIGHT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx;
右表记录无论是否满足条件都会查询出来,而左表只有满足条件才能出来。右表中不满足条件的记录,左表部分都为NULL
-
右外自然:SELECT * FROM 表1 别名1 NATURAL RIGHT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx;
-
全连接:可以使用UNION来完成全连接。
三. 子查询
查询中有查询;
1. 出现的位置
- where后作为条件存在
- from后作为表存在
2. 条件
- 单行单列:SELECT * FROM 表1 别名1 WHERE 列1 [= > < >= <= !=] (SELECT 列 FROM 表2 别名2 WHERE 条件);
- 多行单列:SELECT * FROM 表1 别名1 WHERE 列1 [IN ALL ANY] (SELECT 列 FROM 表2 别名2 WHERE 条件);
- 单行多列: SELECT * FROM 表1 别名1 WHERE (列1 列2) IN (SELECT 列 FROM 表2 别名2 WHERE 条件);
- 多行多列:SELECT * FROM 表1 别名1 , (SELECT…) 别名2 WHERE 条件);
来源:CSDN
作者:ZY(Joker)
链接:https://blog.csdn.net/Excellencest/article/details/104076027