您的当前位置:首页正文

MySQL外键(foreignkey)使用及说明详解

来源:华佗健康网
MySQL外键(foreignkey)使⽤及说明详解

外键也称之为外键约束: foreign key

外键: 外⾯的键, ⼀张表的⼀个字段(⾮主键)指向另外⼀个表的主键, 那么该字段就称之为外键.外键所在的表称之为⼦表(附表); 外键所指向的主键所在的表称之为⽗表(主表)

⼀、增加外键

将⼀个表的字段与另外⼀张表的主键进⾏关联(实体与实体之间的联系)增加外键有两种形式

⽅案1: 在创建表的时候就增加外键: 在表字段之后使⽤foreign keyforeign key(外键字段) references 主表(主键);

⽅案2: 在创建表之后增加外键: 指定外键名字

alter table 表名 add constraint 外键名 foreign key(外键字段) references ⽗表(主键字段)

查看指定的外键名

外键增加的基础条件: 外键字段必须与引⽤表(⽗表主键)的数据类型严格保持⼀致

⼆、删除外键

外键不能被修改,只能先删除后新增.

alter table 表名 drop foreign key 外键名;

三、外键作⽤

外键也称之为外键约束: 主要作⽤在于对数据进⾏约束.

约束1: 外键对⼦表的数据写操作约束: (增加和更新): 如果⼦表中插⼊的数据所对应的外键在⽗表不存在: 不能成功.

约束2: 外键对⽗表也有数据约束: 当⽗表操作⼀个记录,但是该记录被⼦表所引⽤的时候,那么⽗表的操作将会被限制(更新: 主键和删除)

四、外键约束

外键约束: 可以通过在建⽴外键的时候, 对外键进⾏约束控制.约束控制有三种模式

严格模式: district(默认的)

置空模式: set null,对⼦表的限制: 当⽗表删除⼀个被⼦表引⽤的记录的时候,会⾃动的将⼦表中对应的⽗表引⽤(外键)设置成NULL级联模式: cascade, 级联操作: 当⽗表对⼀个被⼦表引⽤的数据进⾏操作的时候,会⾃动的连带更新⼦表对应的数据.(更新操作)模式设定语法: 在外键增加之后(foreign key(外键字段) references ⽗表(主键)),增加on关键字, 指定操作⽅式和约束模式. ⼀个常⽤的约束模式如下

on update cascade -- 级联操作: ⽗表更新,⼦表跟着变on delete set null; -- ⽗表删除, ⼦表置空

更新⽗表主键

删除⽗表记录

外键要增加成功的前提条件

1. ⼦表的外键字段的数据类型必须与⽗表的主键的字段类型要⼀致

2. 如果想要在⽗表进⾏数据删除的时候, ⼦表对应的模式为置空: set null,前提是⼦表对应的外键字段允许为空3. 如果是在表创建之后增加外键: ⼀定要考虑表中的数据是否满⾜外键条件

因篇幅问题不能全部显示,请点此查看更多更全内容