[MySql] 多表关系, 多表查询
一. 多表关系
1.1 一对多
例如: 员工 - 部门表 (一个部门可以有多个员工)
并且在多的一方增加一个字段关联一的一方的主键.
外键约束:
- 物理外键 (使用 foreign key 定义外键关联另一张表的主键)
- 缺点: 影响增删改效率; 仅用于单节点, 不适用与集群; 易引发死锁, 性能低;
- 逻辑外键 (不再使用foreign key, 推荐)
-
1.2 一对一
例如: 公民信息与身份证 (一个公民只有一张身份证)
依旧使用逻辑外键:
1.3 多对多
例如: 课程与学生 (一个课程被多个学生选择, 一个学生选择多个课程)
创建第三张表:
二. 多表查询
2.1 内连接
两张表的交集.
内连接:
-
隐式内连接
-
显式内连接
2.2 外连接
外连接:
-
全外连接
-
左外连接
-
-
右外连接
-
2.3 子查询
子查询:
- 标量子查询
- 行子查询 (“()”)
- 列子查询 (in)
- 表子查询 (group by, 表联合查询)
参照我之前写的这篇文章: Mysql(二) - 约束, 进阶查询