mysql 外键的使用,以及主从表的区别

目的:演示mysql的外键的创建、删除、外键的级联操作

使用mysql创建2张表:按顺序依次创建班级class表和学生表students
在这里插入图片描述
创建外键时,可以为外键起个名字(constraint后面紧挨的字符串为),该名字在删除外键时会被使用。
在这里插入图片描述
注意:如果先创建学生表students并同时创建外键指向班级表class,会报错,因为class表不存在。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

要想删除表class里面1班的数据,同时删除学生表students里面小明的数据,则要设置students表的外键的on delete cascade

先删除原来的外键。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

on update和on delete的方法类似。

注意:

  • 班级表class为主表,学生表students为从表。
  • 主从表区别,看外键在哪个表,外键在学生表,则学生表students为从表,班级表class为主表。

on delete、on update表示事件触发限制,可设参数
外键的级联操作的类型包括:

  • restrict(限制外表中的外键改动):默认值,抛异常。on delete | update restrict
    代表在主表进行删除和更新时,会查看是否存在外键依赖,如果有则不允许删除

  • cascade(级联,跟随外键改动):在主表进行操作时,如果主表的记录删除掉,如果有外键依赖,那么则删除子表中相关联的那条记录

  • set null:
    在主表进行操作时 如果有外键依赖 那么将子表中的数据设置为null

  • no action:什么都不做

总结:分清主从表,因为当删除从表时一条数据时,对主表没有影响。当删除主表的一条数据,如有外键依赖,则会连从表的相关数据一起删除。

删除从表测试如下:

在这里插入图片描述

删除主表测试:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值