mysql- 外键与 级联删除

》复习

查询表达式

在这里插入图片描述

关注顺序

》正则

在这里插入图片描述

》外键的引入

先创建一个主表

在这里插入图片描述

代码

当未选中库时,可以通过库名.表名来指定表

见代码

在这里插入图片描述

》子表的创建

在这里插入图片描述

charger_id,班主任的编号

在这里插入图片描述

》往班任任表中添加数据

在这里插入图片描述

往学生表中添加数据

在这里插入图片描述

》查看数据,学生表的情况

在这里插入图片描述

每一个学生都有对应的班主任

如果把一个班主任删掉以后

在这里插入图片描述

相当于班主任离职了

按道理说,学生表中对应的班主任应该发生变化

然而实际情况

在这里插入图片描述

这样的数据是不安全不合理的

》插入数据的非法

在这里插入图片描述

当前一号班主任已经离职,按理学生不应该可以再被一号班主任接待

如何解决这样的琺合理的情况?

外键关联

》外键的定义

在建表的时候

在这里插入图片描述

注意,外键与关联的键的数据类型一定要保持一致,否则会出问题

在这里插入图片描述

如此就成功创建了一个学生表的子表,他与班主任表主表相关联

》关联的效果

关联好后就不可以随便删除了
在这里插入图片描述
当前不能够把班主任二号删掉的原因是

这个班主任名下还有带着的学生

在这里插入图片描述

把学生移交给其它班主任

在这里插入图片描述

然后再删

在这里插入图片描述

此时,班主任2已经不存在了

如果添加的学生,还要指向这个班主任2

在这里插入图片描述

因为有了外键的关,判断这个是不可以实现的

会有一个报错的提示

》思考,前面的外键是创建的时候定义好的。能否对一个不存在外键的表,临时定义外键吗?

》给一个表添加外键

在这里插入图片描述

代码

在这里插入图片描述

在这里插入图片描述

》删除外键

在这里插入图片描述

》外键约束子键

在这里插入图片描述

》级联删除

当父表的数据删除的时候,与它相关联的子表数据一起删掉

在这里插入图片描述
在定义外键的时候加上 on delete cascade

例如

在这里插入图片描述

在这里插入图片描述

查看一下建表语句

在这里插入图片描述

尝试一下,把主表的一条数据删除,观注子表中相关联的数据是否也没有了

》级联,设置为null

在这里插入图片描述

》删除外键

在这里插入图片描述

》补一个外键同时加级联设置为空

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值