内连接
内连接查询的是两张表交集的部分
- 隐式内连接
|
|
- 显式内连接
|
|
结果集:表1 和 表2的交集
外连接
- 左外连接
相当于查询表1(左表)的所有数据包含表1和表2交集部分的数据
|
|
结果集:表1的所有数据(表2中不存在的数据用 null 填充)
- 右外连接
相当于查询表2(右表)的所有数据 包含 表1和表2交集部分的数据
|
|
结果集:表2的所有数据(表1中不存在的数据用 null 填充)
自连接
自连接查询,可以是内连接查询,也可以是外连接查询。
|
|
结果集:表1和表2的交集
联合查询 union, union all
对于union查询,就是把多次查询的结果并起来,形成一个新的查询结果集。
|
|
结果集:表1和表2的并集
子查询
SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
|
|
子查询外部的语句可以是 INSERT / UPDATE / DELETE / SELECT 的任何一个。
根据子查询结果不同,分为:
- 标量子查询(子查询结果为单个值)
- 列子查询(子查询结果为一列)
- 行子查询(子查询结果为一行)
- 表子查询(子查询结果为多行多列)
根据子查询位置,分为:WHERE之后、FROM之后、SELECT之后。
子查询 – 标量子查询
标量子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询。
常用的操作符: =
<>
>
>=
<
<=
|
|
子查询 – 列子查询
子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。
常用的操作符:IN
NOT IN
ANY
SOME
ALL
操作符 | 描述 |
---|---|
IN |
在指定的集合范围之内,多选一 |
NOT IN |
不在指定的集合范围内 |
ANY |
子查询返回列表中,有任意一个满足即可 |
SOME |
与ANY 等同,使用SOME 的地方都可以使用ANY |
ALL |
子查询返回列表的所有值都必须满足 |
|
|
子查询 – 行子查询
子查询返回的结果是一行(可以是多列),这种查询称为行子查询。
常用的操作符:=
<>
IN
NOT IN
|
|
子查询 – 表子查询
子查询返回的结果是多行多列,这种子查询称为表子查询。
常用的操作符:IN
|
|