继续创作,加快成长!这是我参与「日新计划 10 月更文挑战」的第22天点击查看活动概况
SET NULL
- 在进行测验之前,咱们先需求删去上面树立的外键 fk_emp_dept_id。然后再经过数据脚本,将 emp、dept表的数据恢复了。
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null ;
- 接下来,咱们删去id为1的数据,看看会产生什么样的现象
- 咱们发现父表的记录是能够正常的删去的,父表的数据删去之后,再翻开子表 emp,咱们发现子表emp的dept_id字段,原来dept_id为1的数据,现在都被置为NULL了。
- 这就是SET NULL这种删去/更新行为的作用。
多表查询
多表联系
项目开发中,在进行数据库表结构设计时,会根据事务需求及事务模块之间的联系,剖析并设计表结 构,由于事务之间相互相关,所以各个表结构之间也存在着各种联系,基本上分为三种:
- 一对多(多对一)
- 多对多
- 1对1
一对多
- 事例: 部分 与 职工的联系
- 联系: 一个部分对应多个职工,一个职工对应一个部分
- 实现: 在多的一方树立外键,指向一的一方的主键
多对多
- 事例: 学生 与 课程的联系
- 联系: 一个学生能够选修多门课程,一门课程也能够供多个学生选择
- 实现: 树立第三张中间表,中间表至少包括两个外键,分别相关两方主键
1对1
- 事例: 用户 与 用户概况的联系
- 联系: 1对1联系,多用于单表拆分,将一张表的根底字段放在一张表中,其他概况字段放在另一张表中,以提升操作功率
- 实现: 在任意一方参加外键,相关另外一方的主键,而且设置外键为唯一的(UNIQUE)