WHCSRL 技术网

mysql外键约束

外键:

经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是字表

外键用来建立主表与从表的关联关系。为两个表的数据建立连接,,约束两个表中数据的一致性和完整性。比如,一个水果摊,只有苹果、
桃子、李子、西瓜等4中水果,那么你选择就只能 选择 苹果 、桃子、李子、西瓜 其他的水果都是不能购买的
(上面也就是说,子表元素只能定义和主表有的元素)

主表删除某条记录时,从表中与之相对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,
则每一个外键的值必须等于主键的某个值

定义外键时,需要遵守下列规则:

1.主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
2.必须为主键定义主键
3.主键不能包含空值,但允许在外键中出现的空值
4.外键中列的数目必须和主表的主键中列的数目相同。
5.外键中列的数据类型必须和主表主键中对应列的数据类型相同。

创建表时增加外键的格式:

格式为: constraint 你自己创建的外键名称 foreign key (本表中和父表需要建立联系的字段) references 父表的表名(父表内和字表建立联系的字段)
列:constraint rhh_jx foreign key (sid) references rhh123 (id)

修改表时增加外键的格式:

格式为:alter table 表名 add constraint 你自己创建的外键名称 foreign key (本表中和父表需要建立联系的字段) references 父表的表名(父表内和字表建立联系的字段)
列:
alter table qjx123 add constraint qjx_rhh foreign key (sid) references rhh123(id)

删除外键的格式:

alter table 表名 drop foreign key 外键名称
列:
alter table qjx123 drop foreign key rhh_jx

推荐阅读