数据库中的外键使用详解:
1.外键简介
定义:用于建立表与表之间关联关系的字段称为外键。
简介:外键用于建立表与表之间的关联关系,外键所在的表称为从(子)表。外键所关联的表称为主(父)表。
外键若要创建成功,需要满足如下条件:
- 外键关联的字段必须是主键;
- 外键字段与关联字段数据类型一致;
- 若是在创建表后再添加字段,需要外键字段中的值在主键中都存在,其中null值除外。
外键操作:
①创建表时操作
Create table my_foreign([字段列表],constraint 外键名 foreign key(子表外检键字段) references (主表关联字段) [on delete set null] [on update cascade])charset utf8;
②添加外键字段操作
Alter table my_foreign add constraint 外键名 foreign key(子表外检键字段) references (主表关联字段) [on delete set null] [on update cascade]);
③ 删除外键
Alter table my_foreign drop foreign key 外键列表。
2.表的约束分析
约束模式:
- 严格模式(默认模式),不安全操作时,系统操作失败。
- 级联操作(cascade),主表操作时,子表自动完成同样操作。
- 设置空操作(set null),主表操作时,字表自动完成设置空操作。
操作 | 主表 | 从表 |
曾加 | - | 插入的外建值若在主表关联字段中不存在,则插入失败。在外键允许为Null的条件下,插入为null,不会失败。 |
修改 | 严格模式(district):若关联字段在子表中不存在没有被引用,则修改成功;若存在引用,则修改失败。 级联操作(cascade):若关联字段在字表中被引用,则子表同样完成修改操作。 设置空操作(set null):若关联字段在字表中被引用,则子表引用的外键被设置Null。 | 外键值可以修改为关联字段中存在的值或者null, |
删除 | 严格模式(district):若关联字段在子表中不存在没有被引用,则删除成功;若存在引用,则删除失败。 级联操作(cascade):若关联字段在字表中被引用,则子表同样完成修改操作。 设置空操作(set null):若关联字段在字表中被引用,则子表引用的外键被设置Null。
| - |
查询 | - | - |
3.多表关联时
主要形式:
- 一个子表关联多个主表: 此模式下,当操作主表时,所有子表的操作均满足条件时,才运行操作。
- 一个主表关联多个子表:次模式下,当操作该子表时,每个关联的主表均满足操作条件后, 才通过该操作。