多表查询
内连接
查询出两张表中的公共部分,也就是查询两张表的交集。
语法格式:
# 显式内连接
select 字段列表 from 表1 inner join 表2 on 表1,字段名1 = 表2.字段名2;
# 隐式内连接
select 字段列表 from 表1, 表2 where 条件;
注意:
inner join 是内连接查询的关键字,on 后面跟连接查询的条件。
外连接
左外连接
左表为主,根据条件查询右表数据,如果根据条件查询右表数据不存在则用null来填充。
语法格式:
select 字段列表 from 表1 left join 表2 on 表1,字段名1 = 表2.字段名2;
注意:
left join 是左外连接查询的关键字,on 后跟两张表连接查询的条件。其中表1是左表,表2是右表。
右外连接
右表为主,根据条件查询左表数据,如果根据条件查询左表数据不存在则用null来填充。
语法格式:
select 字段列表 from 表1 right join 表2 on 表1,字段名1 = 表2.字段名2;
注意:
right join 是右外连接查询的关键字,on 后跟两张表连接查询的条件。其中表1是左表,表2是右表。
自连接
自连接,就是自己连接自己
语法格式:
-- 格式一:
select 字段列表 from 表a 别名a join 表a 别名b on 条件;
-- 格式二:
select 字段列表 from 表a 别名a, 表a 别名b where 条件;
注意:
必须为数据表定义别名
联合查询
联合查询就是将多次的查询结果合并起来,形成一个新的结果集。使用联合查询的关键字有
union
、union all
语法格式:
select * from 表1
union [all]
select * from 表2;
注意:
- 联合查询的多张表的列数、列顺序以及字段类型要保持一致;
- union 会对合并之后的数据去重;
- union all 则会将查询到的所有数据直接合并。