约束概述
概念:作用于表中字段的规则,用于限制存储在表中的数据
目的:保证数据库中数据的正确,有效性和完整性
约束有以下几种分类:
因为约束时作用于表中字段的,所以可以在创建表/修改表时进行添加
根据需求,完成该 user 表的创建:
上述SQL语句:
1 | CREATE TABLE USER ( |
外键约束
外键是用来建立两张表数据之间的连接,从而保证数据的一致性和完整性
具有外键的表我们称之为子表(从表),而其关联的另一张表称之为父表(主表)
添加外键:
1 | ALTER TABLE emp ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名); |
删除外键:
1 | ALTER TABLE 表名 DROP FOREIGN KEY 外键名称; |
外键默认是不允许更新或删除的,这与其更新/删除行为有关,主要有以下几种:
可以在外键相关SQL语句后面更新该行为,如:
1 | ALTER TABLE emp ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名) ON UPDATE 行为 ON DELETE 行为; |
案例练习
将之前的 emp(员工)表删除,创建一个 dept(部门) 表和 emp(员工)表:
1 | -- dept表 |
插入相应的数据:
1 | -- dept表 |
给 emp 表添加外键:
1 | ALTER TABLE emp ADD CONSTRAINT fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES dept(id); |
当成功添加外键后,这时我们想删除部门表的研发部时会报错,提示存在外键。我们可以删除该外键:
1 | ALTER TABLE emp drop FOREIGN key fk_emp_dept_id; |
这时就可以将研发部给删除掉了
给外键添加 CASCADE 行为后,可以看出员工表一旦发生变化,那么 emp 表其对应的部门 id 也会跟随着其改变
1 | ALTER TABLE emp ADD CONSTRAINT fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES dept(id); |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果