MySQL_表关系、外键、修改表
概要
1 外键
2 几种表与表之间的关系
3 表关系操作总结
4 表SQL语句补充
详细
1 外键 foreign key
定义: 链接 表与表之间关系的字段.
作用: 让当前这个表的字段跟另外一张表的字段建立关系.
不理解请看: 2-1 图,其中 "部门编号"就是外键字段,在其后面的cmd中有实际创建演示,
2 几种表关系(4种)
2-1 一对多
例:员工表和部门表
- 为什么是一对多?
- 站在员工表角度: 一个员工只能对应一个部门;
- 站在部门角度: 一个部门可以对应多个员工;
- 外键创在哪: 创在"多的"哪个表
- 先创建无外键的表
- 再创建有外键的表(先写基本表语句,最后写关于外键的语句)
- 为什么是多对多?
- 站在书的角度,一本书可以有多个作者;
- 站在某个作者的角度,他可以有多本书;
- 注意: 需要创建第三个表来建两者之间的关系
- 为什么是一对一?
- 站在作者表角度考虑: 一个作者只能对应一个关于该作者的详细信息
- 站在作者详细信息角度考虑: 一个作者的详细信息也只能对应一个作者
- 外键字段建在任何一方都可以 但是推荐建在查询频率较高的表中
- 找表->判断关系->建外键->建sql表
- 先创建被关联表(没有外键字段的表)
- 在插入新数据的时候 应该先确保被关联表中有数据
- 在插入新数据的时候 外键字段只能填写被关联表中已经存在的数据
- 由于外键有实质性的诸多约束 当表特别多的时候外键的增多反而会增加耦合程度,
- 这时怎么办?
- 通过SQL语句层面 建立逻辑意义上的表关系
- 如: 操作员工表的sql执行完毕之后 立刻跟着执行操作部门的sql语句