设置外键约束(FOREIGN KEY, FK )
MySQL外键约束是表的一个特殊字段,经常与外键约束一起使用。对于两个具有关联关系的表而言,相关字段中主键所在表称为主表(父表),外键所在表称为从表(子表)。
外键约束:用来建立主表与从表的关联关系,为两个表的数据建立连接,约束连个表中数据的一致性与完整性。
创建表时设置外键约束
CREATE TABLE table_name(字段名 数据类型 ,字段名 数据类型 .......[CONSTRAINT <外键约束名>] FOREIGN KEY (从表字段) 【,从表字段2 ,.....】REFERENCES <主表表名> <主表字段 [ ,主表字段2,......] >);
在创建表后添加外键约束
ALTER TABLE table_name ADD CONSTRAINT <外键名> FOREIGN KEY <字段> REFERENCES <主表名> <主表字段>;
删除外键
ALTER TABLE tb_name DROP FOREIGN KEY <外键约束名>;
例如
ALTER TABLE employee ADD CONSTRAINT fk_id FOREIGN KEY (deptno) REFERENCES department (deptno)ON DELETE CASCADE; # CASCADE 当主表被依赖列的数据被删除或更新时,子表依赖的列也将被删除或更新
外键约束小结
定义外键时,需要遵守以下规则:
主表必须是已经存在与数据库中,或者是当前正在创建的表。
必须是主表定义主键。
主键不能包含空值,但允许外键出现空值。也就是说,只要外键的每个非空值出现在指定的主表中,这个外键的内容就是正确的。
在主表的后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。
外键中列的数据必须和主表的主键中列数目相同。
外键中列的数据类型必须和主表的主键中对应列数据类型相同。