MySQL基础-外键约束

181 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第20天点击查看活动详情

表信息

QQ截图20221020153636.png

QQ截图20221020153653.png

  • 接下来,我们可以做一个测试,删除id为1的部门信息。
  • 结果,我们看到删除成功,而删除成功之后,部门表不存在id为1的部门,而在emp表中还有很多的员 工,关联的为id为1的部门,此时就出现了数据的不完整性。 而要想解决这个问题就得通过数据库的 外键约束。

语法

添加外键

CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
);
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名)
REFERENCES 主表 (主表列名) ;

案例:

  • 为emp1表的dept_id字段添加外键约束,关联dept表的主键id。
  • alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

QQ截图20221020154011.png -添加了外键约束之后,我们再到dept表(父表)删除id为1的记录,然后看一下会发生什么现象。 此时 将会报错,不能删除或更新父表记录,因为存在外键约束。

删除外键

  • ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

案例:

  • 删除emp表的外键fk_emp_dept_id。
  • alter table emp drop foreign key fk_emp_dept_id; QQ截图20221020154219.png

删除/更新行为

  • 添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行为有以下几种:

具体语法为:

  • ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;