多表查询
左连接和右连接的区别
左连接(LEFT JOIN):保留左表全部行,如果右表没有匹配,就补 NULL。
右连接(RIGHT JOIN):保留右表全部行,如果左表没有匹配,就补 NULL。
内连接(INNER JOIN):只保留两边都能匹配上的行。
所以本质区别就在于:有没有保留没匹配上的记录。
一对多

- 多对多: 利用中间表来维护两表之间的关系

例子
-

如果直接select * from emp , dept ; —->会将他们所有可能情况进行组合
所以要加约束条件 select * from emp , dept where emp.dept = dept.id;
多表查询的分类
- 内连接 (集合的交集部分)

演示
- 外连接 (两集合的相异部分)
左外连接 : 展示时会完全包含左表的所有数据
右外连接 : 展示时会完全包含右表的所有数据
- 自连接 可内可外

一个公司 , 就总体而言都是员工 , 但是细分到部门 , 就有领导之分并且可能各有不同
因此就有自连接的存在. 统一看成 员工表和领导表 即可
需要注意的是自连接一定要注意from时要启用别名, 不然混乱

联合查询
union会进行去重!!!
子查询 说白了就是嵌套查询, 前者的输出是后者的输入
标量子查询 —>返回单行单列的结果

列子查询 —>返回一列的结果


- 行子查询


- 表子查询 —>多行多列

多表查询的练习
内连接就是两个表交集的部分,
外连接就是一个表是全部信息(即使有的字段值为空,也会显示出来)和这两张表的交集部分.



多表查询的总结