MySQL数据库多表操作通关指南(外键约束和多表联合查询)
目录
- 1 多表关系
- 2 外键约束(FOREIGN KEY)
- 2.1 外键约束说明
- 2.2 外键约束的创建
- 2.3 外键约束实操:一对多关系
- 2.4 删除外键约束
- 2.5 外键约束实操:多对多关系
- 3 多表联合查询
- 3.1 联合查询的简介和分类
- 3.2 联合查询数据准备
- 3.3 交叉联合查询
- 3.4 内连接查询
- 3.5 外连接查询
- 3.6 子查询
- 3.6.1 子查询说明与实操
- 3.6.2 子查询中的关键字
- 3.7 自关联查询
- 写在最后
1 多表关系
一对一关系
比如:一个人有一个身份证,一个身份证对应一个人;实现原则:在任一表中添加唯一外键,指向另一方主键;在实际开发中遇到一对一情况比较少,遇到一对一关系一般合并表。在下图中,可以将两个表根据 id 合并:
一对多/多对一关系
比如:一个部门有多个员工,一个员工只能对应一个部门;实现原则:在多的一方建立外键,指向另一方的主键, 示意图如下:
多对多关系
比如:一个学生可以修多个课程,一个课程也可以被多个学生选择;实现原则:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,将多对多的关系,折成一对多的关系,中间表至少要有两个外键,这两个外键分别指向原来两个表的主键, 示意图如下:
2 外键约束(FOREIGN KEY)
2.1 外键约束说明
简介:
MySQL 外键约束是表的一种特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
外键约束用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。
举例说明:
在下图中,从表中的部门号受主表中的主键部门号的范围限制, 即,从表中的部门号列只能取值为1001、1002或1003。
定义外键的规则:
- 主表必须已经存在于数据库中,或者是当前正在创建的表(即在创建外键时,主表必须存在);
- 必须为主表定义主键;
- 主键不能包含空值,但允许在外键中出现空值;
- 在主表的表名后面指定列名或列名的组合,这个列或者组合必须是主表的主键或候选键;
- 外键中列的数目必须和主表的主键中列的数目相同(通俗解释:主键的列数必须与外键的列数相同);
- 外键中列的数据类型必须和主表主键中对应列的数据类型相同。
2.2 外键约束的创建
赞 (0)