1. FOREIGN KEY约束
一个表中的FOREIGN KEY指向另一个表中的UNIQUE KEY(唯一约束的键)。
比如我之前做过的小项目——购物车中的订单项表和订单表,订单项表中的oid就与订单表中的id相对应,应该设置为外键约束(😂当时我还没设置)。外键约束用于预防破坏表之间连接的行为;同时也能预防非法数据插入外键列,因为它必须是指向的那个表的值之一(例如如果没有订单5,就不能在订单项表中插入oid为5的订单项数据。)
注意:这里Order表的id不可以是自增的(AUTO_INCREMENT)!
由于Order在MySQL中是关键字,小伙伴们自己试的时候可以把表名取为order_,防止报错。
OrderItem表中的oid就是OrderItem表的FOREIGN KEY,指向Order表。
2. 创建表时添加外键约束
创建OrderItem表添加外键约束pid
1 | CREATE TABLE OrderItem ( |
3. ALTER TABLE创建外键约束
当OrderItem表已经创建,需要为它添加pid外键约束
1 | ALTER TABLE OrderItems |
如果需要定义多个列的外键约束,则使用下面语法
1 | ALTER TABLE OrderItems |
4. 删除外键约束
在不删除外键约束的情况下,直接删除父表(这里就是Order)会报错。
删除fk_Order2OrderItems
1 | ALTER TABLE OrderItems |
5. 几个知识点
- 谁添加外键谁就是子表,关联的谁就是父表。
- 不一定非要使用外键,根据业务实际考虑(外键的使用占用资源,影响性能。)