MySQL外键约束知识点有哪些

MySQL外键约束知识点有哪些

一、MySQL外键约束作用

外键约束(Foreign Key)即数据库中两个数据表之间的某个列建立的一种联系。这种联系通常是以实际场景中含义完全相同的字段所造成的。MySQL通过外键约束的引入,可以使得数据表中的数据完整性更强,也更符合显示情况。下面,我举一个例子来说明MySQL外键约束的作用。
假如我们对大学学生成绩管理系统建立数据库,有两张表,一张表是学生表,存储了学生的学号、姓名、性别、院系等信息,还有一张表是成绩表,存储了学生学号、课程编号、考试成绩等信息。这样,这两张表之间就会通过学生学号建立外键约束。很自然的我们想到,成绩表的学生学号依赖于学生表的学生学号存在,如果一个学生毕业、或者退学,从学生表中删除时,那么他的相关成绩也就没有必要在成绩表中存在了。在没有创建外键关系之前,这两张表完全是独立存在的,我们可以强行在成绩表中插入一个不存在学生的相关成绩,也可以强行删除学生表中的一个学生,并且不管其成绩信息是否在成绩表中存在。但是,在建立外键关系后,MySQL数据库会约束上述两种行为,每次对数据进行插入或者删除时,都会检查数据完整性,使得我们的操作必须符合实际情况。

二、外键约束创建

(一)创建外键约束的条件

MySQL数据库外键的创建,需要满足以下四个条件,否则会被MySQL数据库拒绝:
1、创建外键的表和列存在
2、组成外键的列存在索引
3、必须指定数据表的引擎为InnoDB
4、外键字段和关联字段,数据类型必须一致

(二)在创建数据表时创建外键约束

在创建数据表时创建外键约束,只需要在创建数据表的create语句后面,使用foreign key关键字指定本表的外键字段,使用reference关键字指定关联表的关联字段,并且明确约束行为即可。
创建外键约束的SQL语句示例如下:

create table student (id int(8),name varchar(20),department varchar(20) ,index (id))ENGINE=InnoDB;create table grade (Sid int(8),Cid int(10),score int,index(Sid),foreign key (Sid) references student(id) on  delete  restrict on update cascade)ENGINE=InnoDB;

在上述SQL语句中,on delete restrict 是指明在删除时外键会对该删除操作进行限制,而on update cascade是指名在更新时会对该更新操作进行同步。

(三)在创建数据表后添加外键约束

同样的,MySQL也支持在创建数据表后再添加外键约束。在上例中,我们先删除grade表,然后再创建grade表,现不创建外键,尝试在创建grade表后添加外键,相关SQL命令如下:

drop table grade;create table grade(Sid int(8),Cid int(10),score int);alter table grade add index(Sid);alter table grade add foreign key (Sid) references student(id) on delete restrict on update cascade;

执行结果如下:

MySQL外键约束知识点有哪些

三、外键约束功能演示

下面,我们就来测试一下外键约束的功能,首先,尝试向grade表插入一个不存在学生的成绩,发现被拒绝:

MySQL外键约束知识点有哪些
之后,尝试删除student表中存在成绩的学生,发现被拒绝:

MySQL外键约束知识点有哪些
紧接着,我们测试一下MySQL外键约束级联更新功能,发现,如果更改了student表中的数据,grade表也会跟着变动,如下所示:

MySQL外键约束知识点有哪些

到此,关于“MySQL外键约束知识点哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

文章标题:MySQL外键约束知识点有哪些,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/25522

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年9月15日 下午11:26
下一篇 2022年9月15日 下午11:27

相关推荐

  • windows谷歌浏览器缓存位置在哪

    谷歌浏览器缓存在哪: 1、打开谷歌浏览器在搜索栏输入“Chrome:Version”查看保存文件的位置。 2、随后在我的电脑中找到路径: C:UsersAdministratorAppDataLocalGoogleChromeUser DataDefault。 谷歌浏览器更改位置教程: 1、浏览器默…

    2022年9月8日
    37900
  • video接口指的是什么

    video接口指的是“复合视频接口”,是音频、视频分离的视频接口,一般由三个独立RCA插头组成,其中V接口连接混合视频信号,为黄色插口;L接口连接左声道声音信号,为白色插口;R接口连接右声道声音信号,为红色插口。 本教程操作环境:windows7系统、Dell G3电脑。 video是什么接口 复合…

    2022年9月2日
    25200
  • Java基于面向对象如何实现一个战士小游戏

    一、思路 首先,我们知道在系统中有个战士的角色叫Soldier,Soldier角色拥有自己的名字、等级、生命力、攻击力、防御力。我们就要区分有什么类型。战士有个行为是普通攻击,行为:方法。由此我们就知道到战士Soldier是一个类,在进行代码实现。 二、代码实现 当我们得知Soldier属于一个类是…

    2022年9月6日
    18300
  • MySQL安装常见报错怎么处理

    1.无法启动处理,错误1053 Windows 无法启动Mysql服务 错误1053:服务没有及时响应启动或控制请求 1.1 结束进程 处理方法: 1、在命令行中敲入tasklist查看进程 2、根据进程名杀死进程 taskkill /f /t /im 进程名称 1.2 更改网络服务 Server2…

    2022年9月15日
    38800
  • MySQL优化器hash join怎么使用

    前言 数据库的优化器相当于人类的大脑,大部分时候都能做出正确的决策,制定正确的执行计划,走出一条高效的路,但是它毕竟是基于某些固定的规则、算法来做的判断,有时候并没有我们人脑思维灵活,当我们确定优化器选择执行计划错误时该怎么办呢,语句上加hint,提示它选择哪条路是一种常见的优化方法。 我们知道Or…

    2022年9月15日
    21500
  • css如何实现​左下角

    左下角 #triangle-bottomleft { width: 0; height: 0; border-bottom: 100px solid red; border-right: 100px solid transparent;} 以上是“css如何实现左下角”这篇文章的所有内容,感谢各位的…

    2022年9月1日
    29800
  • lte是什么

    lte是介于3G和4G之间的一种网络制式;lte的全称是“Long Term Evolution”,是“长期演进”的意思,lte包括“TD-LTE”和“LTE-FDD”两种制式,“LTE-FDD”系统空口上下行传输采用的是一双对称的频段来接收和发送数据,而“TDD-LTE”系统上下行则使用相同的频段…

    2022年9月8日
    22000
  • php可不可以循环字符串

    php可以循环字符串。在PHP里,字符串可以当作数组来使用,字符串中的字符可以通过一个以0为开始的,用类似数组结构中的方括号包含对应数字的方式来查找和修改;因此也可以像循环数组那样循环字符串),循环字符串的语法“for($i=0;$i<strlen($str);$i++){//循环体语句}”。…

    2022年9月26日
    15200
  • java IP归属地功能如何实现

    名列前茅步:如何拿到用户的真实IP 大家都知道,我们一般想访问公网,一般必须具备上网环境,那么我们开通宽带之后,运营商会给我们分配一个IP地址。一般IP地址我们都是自动分配的。所以我们不知道本机地址是什么?想知道自己的ip公网地址,可以通过百度搜索IP查看自己的ip位置 那么问题来了。百度是怎么知道…

    2022年9月6日
    20600
  • windows驱动精灵屏保如何关闭

    驱动精灵屏保关闭方法: 1、打开驱动精灵进入主页点击“百宝箱”。 2、在“其他推荐”中找到“护眼模式”。 3、将“定时休息”边上的开关关闭即可。 感谢各位的阅读,以上就是“windows驱动精灵屏保如何关闭”的内容了,经过本文的学习后,相信大家对windows驱动精灵屏保如何关闭这一问题有了更深刻的…

    2022年9月13日
    16500
联系我们
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部