- 利用外键使得两张表关联,保证数据的一致性和实现一些级联操作。
具体列子如下
create table stu(
sid int UNSIGNED primary key auto_increment,
name varchar(20) not null)
TYPE=InnoDB charset=utf8;
create table sc(
scid int UNSIGNED primary key auto_increment,
sid int UNSIGNED not null,
score varchar(20) default '0',
index (sid), --外键必须加索引
FOREIGN KEY (sid) REFERENCES stu(sid) ON DELETE CASCADE ON UPDATE CASCADE)
TYPE=InnoDB charset=utf8;
注意:在sc表中插入数据时,若插入的sid为22,则会插入失败,违反外键约束,因为外键sid
来自stu表中的id的主键,即stu中的id没有等于22的数据。
级联删除:将stu表中id为2的学生删除,该学生在sc表中的成绩也会级联删除
级联更新:stu表中id为3的学生更改为id为6,该学生在sc表中的对应id也会级联更新
update stu set sid=6 where sid='3';
删除表的时候必须先删除外键表(sc),再删除主键表(stu)//否则会报错