外键 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 外键名字;

外键的基本要求

  1. 外键字段需要保证与关联的主表的主键字段类型完全一致;
  2. 基本属性也要相同;
  3. 如果是在表后增加外键,对数据还有一定的要求(从表数据与主表的关联关系).
  4. 外键只能使用innodb存储引擎,myisam不支持

外键约束

可以在创建外键的时候,对外键约束进行选择性的操作

  • 基本语法:
    add foreign key(外键字段) references 主表(主键) on 约束模式;
  • 约束模式有三种:
  1. district : 严格模式,默认的,不允许操作;
  2. cascade : 级联模式,一起操作,主表变化,从表数据跟着变化;
  3. set null : 置空模式,主表变化(一般指删除),从表对应记录设置为空,但是前提是从表中对应的外键字段允许为空.