外键 foreign key
概念
- 一张表(A)中有一个字段,保存的值指向另外一张表(B)的主键
- B : 主键 , A : 从表
外键的操作
- 添加主键
- 方案1 : 在创建表的时候增加外键(类似主键)
[constraint
外键名
] foreign key(外键字段) references 主表(主键);
- 方案2 : 在创建表后增加外键
alter table 从表 add[constraint
外键名
] foreign key(外键字段) references 主表(主键);
- 修改&删除外键
外键不允许修改,只能先删除后增加
外键不能删除外键产生的普通索引,只能删除外键,如果想删除对应的索引,方法为alter table 表名 drop index 索引名字
;
alter table 从表 drop foreign key 外键名字
;
外键的基本要求
- 外键字段需要保证与关联的主表的主键字段类型完全一致;
- 基本属性也要相同;
- 如果是在表后增加外键,对数据还有一定的要求(从表数据与主表的关联关系).
- 外键只能使用innodb存储引擎,myisam不支持
外键约束
可以在创建外键的时候,对外键约束进行选择性的操作
- 基本语法:
add foreign key(外键字段) references 主表(主键) on 约束模式
;
- 约束模式有三种:
- district : 严格模式,默认的,不允许操作;
- cascade : 级联模式,一起操作,主表变化,从表数据跟着变化;
- set null : 置空模式,主表变化(一般指删除),从表对应记录设置为空,但是前提是从表中对应的外键字段允许为空.