MySql学习系列 -- 外键

版权声明:本文为博主原创文章,未经博主允许不得转载。如果感觉文章哪里写的不对或者存在疑问,欢迎留言,共同学习、进步! https://blog.csdn.net/ydm19891101/article/details/85595094

      上一篇博文中介绍到了,MySql的InnoDB存储引擎支持外键特性,那外键到底有什么作用以及项目中如何使用呢?今天我们就接着来学习一下。关于外键是什么,请阅读百度百科 外键

一、作用

1、约束父表、子表的操作,子表在进行写操作的时候,如果外键字段在父表中找不到对应的匹配,操作就会失败;对父表的主键字段进行删和改时,如果对应的主键在子表中被引用,操作就会失败。

其中,在对父表、子表进行正常操作时会有一个影响范围的设定,有以下四种:

Restrict:严格模式(默认),父表不能删除或更新一个被子表引用的记录。

Cascade:级联模式,父表操作后,子表关联的数据也跟着一起操作。

Set null:置空模式,前提外键字段允许为NLL, 父表操作后,子表对应的字段被置空。

No Action:无操作,父表进行的操作对于子表无影响

通过外键,可以最大程度的保证数据的完整性和一致性。

二、外键操作

      1. 增加

      create table my_tab1(

      id int primary key auto_increment,

      name varchar(10) not null,

      class int,

      foreign key(class) references my_tab2(主键字段名);

      )charset utf8;
     alter table my_tab1 add [constraint 外键名] foreign key(外键字段名) references mytab2(主键字段名);

      2、删除外键

 alter table my_tab drop foreign key 外键名字;

note:      

1. 表储存引擎必须是innodb,否则创建的外键无约束效果。

2. 外键的列类型必须与父表的主键类型完全一致。

3. 已经存在数据的字段被设为外键时,必须保证字段中的数据与父表的主键数据对应起来。

猜你喜欢

转载自blog.csdn.net/ydm19891101/article/details/85595094