子查询请参考:
多表查询分类总览:
1、内连接
语法:
# 隐式内连接
select 字段列表 from 表1,表2 where 条件···;
# 显示内连接
select 字段列表 from 表1 [inner] join 表2 on 连接条件···;
2、外连接
描述:外连接又分为左外连接和右外连接;查询范围如下图;
左外连接:左外连接查询的是左表的全部数据(下图浅蓝色区域)以及与右表的交集部分(下图浅绿色区域);
右外连接:右外连接查询的是右表的全部数据(下图浅黄色区域)以及与左表的交集部分(下图浅绿色区域);
语法:
# 左外连接
select 字段列表 from 表1 left [outer] join 表2 on 条件;
# 右外连接
select 字段列表 from 表1 right [outer] join 表2 on 条件;
案例演示:
# 查询emp表的所有数据,和对应的部门信息(左外连接)
select emp.*, dept.* from emp left outer join dept on emp.dept_id = dept.id;
# 查询dept表的所有数据,和对应的员工信息(右外连接)
select dept.*, emp.* from emp right outer join dept on emp.dept_id = dept.id;
3,自连接
语法:
select 字段列表 from 表a 别名a join 表a 别名b on 条件;
案例演示:
4,联合查询:
注意点:
1,对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致,;
2,union关键字默认去重,如果使用union all 可以包含重复项;
应用场景:要查询的结果来自多个表,且多个表之间没有直接的连接关系,但查询的信息一致时候;
SELECT * from 表1 LEFT JOIN 表2 on 条件
UNION [all]
SELECT * from 表1 RIGHT JOIN 表2 on 条件;
案例演示: