mysql外键约束创建及删除_MySQL中的外键的创建,约束和删除

一、外键的创建

语法一:后续添加方法

alter table 表名 add constraint 约束名 foreign key(当前表中约束的字段) references 主表表名(要约束的字段名);

alter table student add constraint fk_class_student foreign key(cls_id) class(cls_id) on update cascade on delete no action;1

2

语法二:创建表的方法

CREATE TABLE student(

sid int PRIMARY KEY,

cls_id int not null,

sname varchar(10) not null,

constraint fk_class_student foreign key(cls_id) references class(cls_id) on update cascade on delete no action

)ENGINE=InnoDB DEFAULT CHARSET=utf8;1

2

3

4

5

6

一个额外点:

SHOW CREATE TABLE class1

可以查询表的建表信息

a3e96448bbd71ee19c1fadcef9378b12.png

CREATE TABLE `class` (

`cls_id` int NOT NULL,

`cls_name` varchar(15) NOT NULL,

PRIMARY KEY (`cls_id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf81

2

3

4

5

下面的演示我们就使用刚刚创建的这个学生表和班级表

内容如下

cdbe50843a798551e8f071d480432832.png

cfd9c336c369c9b5ccba370dd8140928.png

二,关于四种约束方式

在父表上进行update/delete操作时,子表的操作类型

CASCADE     子表会删除包含与已删除键值有参照关系的所有数据

SET NULL     父表delete、update的时候,子表会将关联记录的外键字段所在列设为null

RESTRICT     拒绝有关联关系的字段的删除要求(这是默认设置,也是最安全的设置)

NO ACTION     和RESTRICT 类似

以我们刚刚设置的外键为例(on update cascade on delete no action)

当我们尝试进行删除操作时

delete from class WHERE cls_id=11

结果如下

f5cc26d837bdd7fd81b7cbc8b990ab1c.png

可以看到由于外键约束中on delete no action的存在,不允许对主表进行删除操作。但是子表可以

delete from student WHERE cls_id=11

9bc421d7d03b0bb4d4265fce93cb4fbc.png

当我们对父表的关联键进行更新操作时,由于on update cascade的存在,可以正常更新

UPDATE class set cls_id=4 where cls_id=11

4946612f6d965b9326fdb3abf665ecdb.png

并且随着主表的更新,子表中的外键字段也进行了更新

cfef16689e7a69874c8f6956d1d60e38.png

三,删除外键的方法

alter table 子表名 drop foreign key 外键约束名

alter table student drop foreign key fk_class_student1

2

当我们将外键删除之后,父表的操作就变得可以正常进行了

1642f1e5e78d056aa6656b87ac390142.png

文章来源: blog.csdn.net,作者:Spike Bo,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/m0_51709303/article/details/112589209

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不爱读书怎么办?用这个新奇的方法,熟知137亿年来的地球通史

今天,小木为模友们挑选的小荐货:《地球通史墙书》第一次接触《地球通史》墙书的时候,虽然“地球通史”的概念非常吸引我,但“墙书”的叫法怎么听都像是一个噱头,所以小木一直有些莫名的排斥,直到在小天把试…

测试驱动开发简介

本文节选自《测试驱动的面向对象软件开发》 第1章第4节“测试驱动开发简介” TDD核心的循环是:写一个测试;写一些代码让测试通过;重构代码,使被测试特征的实现尽可能简单。重复这个过程,如图1-1所示。 图1-1基本TDD循环…

在 .NET 中使用 Flurl 高效处理Http请求

简介官方介绍,Flurl是一个现代的,流利的,支持异步的,可测试的,可移植的,URL增强和Http客户端组件。Url构建现在有一个登录的接口,地址如下:https://www.some-api.com/login?nameLee…

图像还可以这样玩!如何用波的算法处理图像

我对图像处理一直很感兴趣,曾经写过好几篇博客。前几天读到一篇文章,它提到图像其实是一种波,可以用波的算法处理图像。我顿时有一种醍醐灌顶的感觉,从没想到这两个领域是相关的,图像还可以这样玩!下面我就…

[存档]CxServer的项目周期管理

2019独角兽企业重金招聘Python工程师标准>>> 主题:大学生创新性实验计划 项目周期管理 作者:宋志民备注:本文为《 基于CxServer的大学生科学研究项目管理实践探索》的一部分 内容: 一般情况下大学生科研计划的种类较多…

在职场中,长得漂亮真的有用吗?

非常有用。下面五张图,每张图介绍一个研究,都可以从一个侧面回答问题。01 企业对求职者的颜值有多看重?这张图来自两位学者对国内某网站超过100万份招聘广告的分析结果。总的来看,有7.7%的企业会对应聘者的外貌提出要求&#xff0…

TIOBE 3月榜单:新功能将加入,C语言仍高居榜首

喜欢就关注我们吧!TIOBE 公布了 2021 年 3 月的编程语言排行榜。本月 TIOBE 指数没有什么有趣的变化。因此,TIOBE CEO Paul Jansen 表示,其打算透露一些近期将加入至榜单中的新功能。第一个问题涉及到一个 bug 修复。由于使用了复杂的算法&am…

java jdk win10安装_Java 安装 JDK WIN10

JDK的全称是Java SE Development Kit它的官方网站只要用Goole搜索下即可找到,官方提供JDK8、11、12的下载入口。我们点击Java SE Development Kit 8进入下载。我们下载的版本是jdk-8u91-windows-x64.exe安装过程按导向默认安装,中途什么选项都不改。安装…

twitter达人不能不知的缩写

今天上午有人在新闻编辑室问“嘿,Twitter上的MT是什么意思?”,让我们觉得编制一个Twitter缩写的列表可能会有帮助。 这就是为什么我们要做这些的原因。想要全面地完成其实不容易,所以请在评论中增加这个列表中缺失的缩写吧。技术类…

50张神图……好不容易才找到完整版!

描述:1.耶鲁大学耗时5年的研究成果。 如果你看见这个舞女是顺时针转,说明你用的是右脑 如果是逆时针转,说明你用的左脑。 据说,14%的美国人可以两个方向都能看见 可以和别人一起看,测试下,一般不同人同时看…

编程到底难在哪里?

写在前面:这篇回答并不是讲述在生活中程序员如何买苹果,而是以买苹果为例说明程序员如何解决问题。程序员需要对问题进行透彻的分析,理清其涉及的所有细节,预测可能发生的所有意外与非意外的情况,列出解决方案的所有步…

DDD实战课--学习笔记

目录学好了DDD,你能做什么?领域驱动设计:微服务设计为什么要选择DDD?领域、子域、核心域、通用域和支撑域:傻傻分不清?限界上下文:定义领域边界的利器实体和值对象:从领域模型的基础…

如何预测未来房价的发展

1946年2月16日,是一个值得纪念的日子。在这一天,人类历史上真正意义上的第一台电子计算机诞生了,此后计算机便随着科技的发展以强大的生命力飞速发展着。而作为用来定义计算机程序的形式语言——编程语言也紧跟计算机其后蓬勃发展&#xff0c…

《进击吧!Blazor!》系列入门教程 第一章 7.图表

作者备注《进击吧!Blazor!》是本人与张善友老师合作的Blazor零基础入门系列视频,此系列能让一个从未接触过Blazor的程序员掌握开发Blazor应用的能力。视频地址:https://space.bilibili.com/483888821/channel/detail?cid151273Bl…

一日一技:ASP.NET Core Api网关Ocelot初探

概述Ocelot面向使用.NET运行微型服务/面向服务的体系结构的人员,这些体系结构需要在系统中具有统一的入口点。特别是我想与IdentityServer参考和承载令牌轻松集成。Ocelot是按特定顺序排列的一堆中间件。Ocelot将HttpRequest对象操作到由其配置指定的状态&#xff0…

盘点那些让程序员目瞪口呆的Bug都有什么?

程序员一生与bug奋战,可谓是杀敌无数,见怪不怪了!在某知识社交平台中,一个“有哪些让程序员目瞪口呆的bug”的话题引来了6700多万的阅读,可见程序员们对这个话题的敏感度有多高。1、麻省理工“只能发500英里的邮件”该…

这本 “写不完” 的黑科技笔记本,恐怕要颠覆整个行业!

这是一本可以“阅后即焚”的笔记本?别想太多这个“焚”不是那个“焚”哦~TA非常神奇!风筒吹吹,笔记本上字迹都会自动消失。what?(暂时保密,一会见证奇迹)每个人在步入学生时代,到社会…

.NET 6 Preview 2 发布

前言在 2021 年 3 月 11 日, .NET 6 Preview 2 发布,这次的改进主要涉及到 MAUI、新的基础库和运行时、JIT 改进。.NET 6 正式版将会在 2021 年 11 月发布,支持 Windows、macOS、Linux、Android 和 iOS 等系统以及 x86、x86_64、ARM 和 ARM64…

[转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)

目的:1.ArcGIS API for Flex实现Toolbar功能,包括ZoomIn、ZoomOut、Pan、PrevExtent、NextExtent、FullExtent功能。准备工作:1.这次地图数据就用Esri提供的http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/Ma…

物理学家史蒂夫·霍金逝世,享年76岁(附图文回顾他的一生)

3月14日消息,据英国天空新闻等多家媒体报道,史蒂芬威廉霍金(Stephen William Hawking)去世,享年76岁(1942年1月8日-2018年3月14日)。这一消息已经得到霍金家人确认。霍金的三个孩子露…