来源:https://www.bilibili.com/video/BV1Kr4y1i7ru
多表查询目录
- 多表关系
- 多表查询概述
- 内连接
- 外连接
- 自连接
- 子查询
- 多表查询案例
多表关系
- 一对多(多对一)
- 多对多
- 一对一
一对多
部门 和 员工:一个部门里有多个员工
多对多
学生 和 课程:一个学生可选修多门课程,一门课程可以有很多学生在学习。
一对一
用户 和 用户详情
一般用来单表的拆分
多表查询概述
需求:查询多个表里的数据
select * from emp, dept ;
结果集总数是 emp 表记录数 * dept 表记录数
这种现象就是 笛卡尔积
两个集合的所有组合情况
正常需求是需要消除无效的笛卡尔积后的结果集:
A 实际有关系的数据是 3
B 实际有关系的数据是 2
多表查询时怎么消除无效的笛卡尔积
找出两个表相互关联的字段
使用连接查询
select * from emp, dept where emp.department_id = dept.department_id order by emp.employee_id ;