美文网首页
Mysql 外键的作用以及怎么设置外键

Mysql 外键的作用以及怎么设置外键

作者: lihao_李浩 | 来源:发表于2021-11-22 15:11 被阅读0次

这里只 谈自己理解的内容,可能不全面,大家看看就好
外键的作用应该是为了保护数据的完整性,我们都知道,在关系型数据库里往往我们需要把数据存在不同的表里面, 这样才能形成完整的数据,

这里举个老生常谈的例子:
我这里有两张表,分别是
表A:班级表
表B:学生表

班级表 A:

班级ID(主键) 班级名称
101 三年级一班
102 三年级二班

学生表B:

学号(主键) 姓名 班级ID
202100001 小明 101
202100002 张大宝 102

我们可以看到 每个学生都属于一个班级,学生表里面一个字段存着班级表的主键代表学生的班级

假如没有设置外键

这时我们解散了班级 三年级一班 对应操作就是删除了班级ID为101的数据
那么我们看学生表里面是不是还存班级ID? 这肯定是我们不愿看到的,现实中也不会存在有哪个学生不存在班级了对不对?

设置外键

设置外键要对表B设置,外键字段为班级ID 被引用的表(父)选择表A,被引用的字段选择表A的 班级ID
navicat里面设置外键的界面大家参考一下,非本示例:

image.png

action有下面几种选择:


image.png

1. cascade方式

在父表上update/delete记录时,同步update/delete掉子表的匹配记录

2. set null方式

在父表上update/delete记录时,将子表上匹配记录的列设为null
要注意子表的外键列不能为not null

3. No action方式

如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

4. Restrict方式

同no action, 都是立即检查外键约束

5. Set default方式

父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

如果选择删除时为 CASCADE
那么删除了班级表班级数据时,班级下所有的学生信息都会被同步删除
如果选择删除时为。NO ACTION 或者 REWSTRICT
那么删除班级表数据时,会立刻检查学生表有没有绑定了该班级的学生,如果有的话会提示不能删除的:


image.png
注意: update/delete 可以分别设置不同的action哦

扩展资料:
No action和Restrict有何不同

相关文章

  • Mysql 外键的作用以及怎么设置外键

    这里只 谈自己理解的内容,可能不全面,大家看看就好外键的作用应该是为了保护数据的完整性,我们都知道,在关系型数据库...

  • 设置外键,外键约束值的区别

    laravel 设置外键,并设置外键约束的方式 为联级删除 更新:在使用Navicat for mysql设计表时...

  • MYSQL外键的作用

    这篇文章我们来了解下mysql中外键的作用。 如果一张表中有一个非主键的字段指向了另一张表中的主键,就将该字段叫做...

  • 09_MySQL多表 & JDBC

    MySQL多表 外键 主表主键和从表外键 ==(从表的外键引用主表的主键)== 从表的外键类型必须和主表的主键类型...

  • MySQL为已经添加好的数据表添加外键

    MySQL遇到的问题 一、为已经添加好的数据表添加外键 (1)我们可以在创建表的同时将设置外键。 (2)此外我们如...

  • 数据库关闭外键约束

    解决方案: mysql> SET foreign_key_checks = 0; // 设置外键约束检查关闭

  • MySQL的简单学习(二)-多表查询

    外键 设置外键 如果是创建表添加外键约束,我们需要在创建表的()最后添加如下语句 FOREIGN KEY (bra...

  • Mysql外键

    只有InnoDB存储引擎才支持外键 有两张表: 创建外键 方式1: 如上面创建表的语句: 方式2: 删除外键

  • mysql外键

    为已经添加好的数据表添加外键: 语法:alter table 表名 add constraint FK_ID fo...

  • MySQL - 外键

    一、定义 外键约束(FOREIGN KEY Constraint) ,用来维护从表(Child Table)和主表...

网友评论

      本文标题:Mysql 外键的作用以及怎么设置外键

      本文链接:https://www.haomeiwen.com/subject/igrbtrtx.html