东兰县建设局网站注册网站建设

pingmian/2025/10/8 16:17:41/文章来源:
东兰县建设局网站,注册网站建设,手机软件开发培训,wordpress注册邮件内容设置一、外键约束的概念 外键约束#xff08;FOREIGN KEY,缩写FK是数据库设计的一个概念#xff0c;它确保在两个表之间的关系保持数据的一致性和完整性。 外键是指表中的某个字段的依赖于另一张表中某个字段的值#xff0c;而被依赖的字段必须具有主键约束或者唯一约束#…一、外键约束的概念 外键约束FOREIGN KEY,缩写FK是数据库设计的一个概念它确保在两个表之间的关系保持数据的一致性和完整性。 外键是指表中的某个字段的依赖于另一张表中某个字段的值而被依赖的字段必须具有主键约束或者唯一约束被依赖的数据表称为主表父表设置外键约束的表称为子表或者从表。 比方说现在有两张表学生表和班级表学生表中的班级号字段的值取决于班级表中班级号字段。 主表父表班级表-班级编号-主键 从表子表学生表-班级编号-外键 二、不使用外键约束会出现的问题 首先创建这两张表学生表和班级表然后不添加班级号的外键约束,并且插入一些初始化数据。 一创建表及初始化数据 -- 创建班级表 create table t_class(cno int(4) primary key auto_increment, -- 班级号自增主键cname varchar(12) not null -- 班级名称不为空值 );-- 查看班级表 select * from t_class;-- 插入班级信息 insert into t_class values (null,java01班) ,(null,python01班),(null,大数据01班);-- 创建学生表不含有外键约束的 create table t_student(sno int(4) primary key auto_increment, -- 学号为主键自增sname varchar(5) not null , -- 姓名为非空约束age int(3) check (age 18 and age 55), -- 年龄为18-55之间 检查约束sex char(1) default 男 check (sex 男 || sex 女), -- 性别默认为男只能是男或者女cno int(4) );-- 查看学生表 select * from t_student;-- 插入学生信息 编号从1001开始 insert into t_student values (1001,张三,21,男,1); insert into t_student values (null,李四,21,男,1); insert into t_student values (null,王五,21,男,2); insert into t_student values (null,赵六,21,男,3); insert into t_student values (null,崔七,21,男,4); # 插入不存在的班级编号依旧成功 delete from t_student where cno 4; -- 删除掉错误的数据在没有外键约束的情况下其实学生表从表中的班级号是可以任意插入的造成了数据的不一致性 二更新和删除表数据 更新java01班的班级号为9学生表中的数据并没有进行更新数据再次不一致 -- 更新班级表数据 -- 将java01班的编号修改为9号 update t_class set cno 9 where cname java01班 and cno 1; select * from t_class; -- 班级表中成功修改 select * from t_student; -- 学生表中java01班的学生的班级编号并没有修改为9删除java01班的班级信息学生表中的java01班的学生信息依旧没有变化数据不一致性 -- 删除表数据 -- 删除java01班的班级信息 delete from t_class where cno 9 ; select * from t_class; select * from t_student;三小结 在不使用外键约束的情况下增删改均会影响数据的不一致性和完整性。 三、使用外键约束及外键策略 一创建表及初始化数据 -- 创建班级表 create table t_class(cno int(4) primary key auto_increment,cname varchar(12) not null );-- 查看班级表 select * from t_class;-- 插入班级信息 insert into t_class values (null,java01班) ,(null,python01班),(null,大数据01班);-- 创建学生表 外键约束只有表级约束 create table t_student(sno int(4) primary key auto_increment, -- 学号为主键自增sname varchar(5) not null , -- 姓名为非空约束age int(3) check (age 18 and age 55), -- 年龄为18-55之间 检查约束sex char(1) default 男 check (sex 男 || sex 女), -- 性别默认为男只能是男或者女cno int(4),constraint fk_stu_classcno foreign key (cno) references t_class (cno) -- 添加外键约束 );-- 查看学生表 select * from t_student;-- 插入学生信息 1.(在没有外键约束的情况下其实我们插入任何班级号都是可以的) insert into t_student values (1001,张三,21,男,1); -- 这里第一个插入的id会影响后面的id从1001开始 insert into t_student values (null,李四,21,男,1); insert into t_student values (null,王五,21,男,2); insert into t_student values (null,赵六,21,男,3); -- 1452 - Cannot add or update a child row: a foreign key constraint fails (mytestdb.t_student, CONSTRAINT fk_stu_classcno FOREIGN KEY (cno) REFERENCES t_class insert into t_student values (null,崔七,21,男,4); # 插入不存在的班级编号报错这里插入不存在的班级编号时直接保存因为外键约束帮我们做出了限制. 1452 - Cannot add or update a child row: a foreign key constraint fails (mytestdb.t_student, CONSTRAINT fk_stu_classcno FOREIGN KEY (cno) REFERENCES t_class 二 更新和删除数据 更新和删除数据时涉及到外键策略我们先尝试着去改动和删除一些数据。 更新java01班的班级号为9 update t_class set cno 9 where cno 1;报错update t_class set cno 9 where cno 1 1451 - Cannot delete or update a parent row: a foreign key constraint fails (mytestdb.t_student, CONSTRAINT fk_stu_classcno FOREIGN KEY (cno) REFERENCES t_class (cno)) 时间: 0.002s 因为添加了外键约束两个表已经建立了关系为了维持数据的一致性当改动班级表中的班级号时原有的学生表中的编号也需要改动默认情况下是不执行的需要添加一些条件。 删除java01班的班级信息 delete from t_class where cno 1;报错delete from t_class where cno 1 1451 - Cannot delete or update a parent row: a foreign key constraint fails (mytestdb.t_student, CONSTRAINT fk_stu_classcno FOREIGN KEY (cno) REFERENCES t_class (cno)) 时间: 0.008s 和更新时的报错原因一样同样是因为外键的原因。 三外键策略 tips:cascade 操作 和 set null 操作 在表的创建添加外键约束时即可添加我这里是为了方便直接修改外键约束策略了。灵活的根据业务将set null 和 cascade 结合起来使用 no action 不允许操作–默认的外键策略 修改从表的数据为Null然后再修改主表的数据 这种方法比较傻就是硬写SQL -- 修改java01班的班级编号为9 -- 1. 先修改学生表中java01班的数据为null update t_student set cno null where cno 1; -- 2. 更新班级表中的数据 update t_class set cno 9 where cno 1; -- 3. 更新学生表中的数据 update t_student set cno 9 where sno in (1001,1002);cascade 级联操作操作主表的时候影响从表的外键信息 先删除之前的外键约束再重新添加外键约束。 -- 1.删除原有外键约束 alter table t_student drop foreign key fk_stu_classcno; -- 2.添加新的外键约束策略 --- 在更新和删除时进行级联操作 alter table t_student add constraint fk_stu_classcno foreign key (cno) references t_class (cno) on update cascade on delete cascade; -- 3. 更新数据 将java01班的班级号换为 19 update t_class set cno 19 where cno 9; -- 4. 查询验证 select * from t_class; select * from t_student;set null 置空操作操作主表的时候影响从表的外键信息从表对应的值为null值先删除之前的外键约束然后重新添加新的外键约束。 -- 1.删除原有外键约束 alter table t_student drop foreign key fk_stu_classcno; -- 2.添加新的外键约束策略 --- 更新和删除时将从表的外键值都置为null alter table t_student add constraint fk_stu_classcno foreign key (cno) references t_class (cno) on update set null on delete set null; -- 3. 更新数据 将java01班的班级号换为 29 update t_class set cno 29 where cno 19; -- 4. 手动更新学生从表的数据 update t_student set cno 29 where sno in (1001,1002); -- 4. 查询验证 select * from t_class; select * from t_student;下面是一个在创建表时添加外键约束策略的例子 -- 创建班级表 create table t_class(cno int(4) primary key auto_increment,cname varchar(12) not null );-- 插入班级信息 insert into t_class values (null,java01班) ,(null,python01班),(null,大数据01班);-- 查看班级表 select * from t_class;-- 创建学生表 外键约束只有表级约束 create table t_student(sno int(4) primary key auto_increment, -- 学号为主键自增sname varchar(5) not null , -- 姓名为非空约束age int(3) check (age 18 and age 55), -- 年龄为18-55之间 检查约束sex char(1) default 男 check (sex 男 || sex 女), -- 性别默认为男只能是男或者女cno int(4),-- 当主表中的数据更新时从表数据级联更新当主表数据删除时从表数据设置为Nullconstraint fk_stu_classcno foreign key (cno) references t_class (cno) on update cascade on delete set null );-- 插入学生信息 1.(在没有外键约束的情况下其实我们插入任何班级号都是可以的) insert into t_student values (1001,张三,21,男,1); -- 这里第一个插入的id会影响后面的id从1001开始 insert into t_student values (null,李四,21,男,1); insert into t_student values (null,王五,21,男,2); insert into t_student values (null,赵六,21,男,3);-- 查看学生表 select * from t_student;-- 更新java01班班级编号为9 update t_class set cno 9 where cno 1; select * from t_class; select * from t_student;-- 删除大数据01班 delete from t_class where cno 3; select * from t_class; select * from t_student;四、总结 当使用外键约束时需要注意以下几点 外键约束只有表级约束没有列级约束。外键约束会影响表的性能因为数据库必须对每个写操作执行额外的检查。如果尝试插入不符合外键约束的行数据库会抛出一个错误。根据不同的业务需求自定义不同的外键策略 cascade || set null“constraint fk_stu_classcno foreign key (cno) references t_class (cno) on update cascade on delete set null”

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

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

相关文章

做ppt做好的网站网站建设计算机人员招聘

第一题: 泰勒展开式求sin(x) 【问题描述】 已知sin(x)的泰勒展开式为: sin(x) x/1! - x^3/3! x^5/5! - x^7/7! …… 当某一项的绝对值小于ξ时,停止计算。 输入x及ξ的值,输出sin(x)的值,小数点后保留5位小数。…

上海响应式网站建设企业室内设计学校有哪些

当我们打印一个网页时,默认情况下,网页的背景图片是不会被打印出来的 这与我们的打印代码无关,需要设置IE便可,如下图: 转载于:https://www.cnblogs.com/blodfox777/archive/2008/08/05/1260860.html

个性化网站建设多少钱响应式网站制作流程

工作中经常要和第三方做对接,比如支付、电子合同等系统。操作成功之后,第三方会发送异步的通知,返回最终的处理结果,使用异步而不是使用同步通知,是为了加快系统响应速度,防止线程阻塞。任务处理完成后通过…

济南营销网站建设广告设计与制作的课程

dolphinscheduler运行了一段时间,忽然发现一个流程下某个任务一直在自动重跑,把工作流删了,任务删了,下线等等,都不能阻止他重复的运行,每秒1次,真是见了鬼 1、把zookeeper停掉发现不再重跑了 …

如何提网站建设需求网络服务器的分类

Flink on k8s部署日志详解及与Yarn部署时的日志生成模式对比 最近需要将flink由原先部署到Yarn集群切换到kubernetes集群,在切换之后需要熟悉flink on k8s的运行模式。在使用过程中针对日志模块发现,在k8s的容器中,flink的系统日志只有jobma…

做电影网站前途网页制作的公司哪家好

一、Thymeleaflayuijquery复选框回显基于Thymeleaf模板下的layuijquery复选框回显,主要是jquery。大致意思是:把数组转成JSON传到前台,再在前台转回数组 AJAX一般都是用JSON格式或XML格式来传递数据的JSON就是一种具有特殊格式的字符串。1.实…

学企业网站开发7a125v能插国内插座吗

1、static修饰的变量和方法,在类加载时即被初始化,可直接通过类名.变量名和类型.方法名进行调用。2、static修饰的变量,在类加载时会被分配到数据区的方法区。类的实例可共享方法区中的变量。如果static修饰的变量发生改变,那么所…

浙江网站建设工作室公司培训网站建设

html是什么?html即超文本标记语言,现在大多网页都是html的格式。而所谓的html文件是一种超文本文件,其中超文本可以是图片或音乐等非文字元素,使用很广泛。但是很多用户都不太明白html是什么文件?也不清楚html文件要如…

蝴蝶传媒网站推广湖北响应式网页建设哪家有

大家都知道&#xff0c;seo的一个很重要的一点就是要把网站做的条理清晰&#xff0c;让搜索引擎很容易的读明白&#xff0c;这个条理清晰不仅体现在网站的物理路径&#xff0c;url等地 方。在<h1><h2><h3>等方面也是这样。并不是<h1>对于关键字排名有帮…

企业新网站seo推广wordpress 微网站

原文地址&#xff1a;https://blog.csdn.net/chaishen10000/article/details/79324016 最近一段时间都在学习深度学习&#xff0c;想着在用户画像标签模型中看能不能用上&#xff0c;终于&#xff0c;用了一个多月的时间&#xff0c;结合实际的场景和数据&#xff0c;搭建了一套…

一级a做爰网站中国php 金融网站源码

实验三 一  实验名称 感知器设计 二 目的和意义 使用感知器完成线性分类任务 三 操作步骤或算法结构 数据预处理。载入数据文件&#xff08; iris.csv 文件&#xff09;中的数据&#xff0c;并将其分成样本向量矩阵X和样本分类结果向量 G \bf G G。 给 4 4 4 列向量的…

绮思网站建设qswoo高端网站制造

给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1&#xff1a; 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2&#xff1a; 输入: "cbbd" 输出: "bb"…

太原做网站哪家好移动端数据可视化

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理计算机组成原理中 存储系统的知识点和值得注意的地方 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以…

东旭网站建设seo优化推广招聘

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第7篇分享&#xff01; 工欲善其事必先利其器&#xff0c;为了ai学习的效能提升&#xff0c;放假期间对google浏览器做了一次系统整改&#xff0c;添加了一些配置和插件&#xff0c;这里既有一些显示、主…

做国际物流在哪些网站找客户百度seo一本通

35的年纪&#xff0c;上有老下有小&#xff0c;即将步入中年危机&#xff0c;在这个节骨眼上被辞&#xff0c;能不悲观吗&#xff1f; 在这个年纪人们往往追求的是稳定的工作和生活&#xff0c;而进入一个自己不熟悉的行业并不是一个好的选择。 况且&#xff0c;你认为的外包…

单位网站建设做到哪个科目海宁公司做网站

第四章 机器学习 六、多项式回归 1. 什么是多项式回归 线性回归适用于数据呈线性分布的回归问题。如果数据样本呈明显非线性分布&#xff0c;线性回归模型就不再适用&#xff08;下图左&#xff09;&#xff0c;而采用多项式回归可能更好&#xff08;下图右&#xff09;。例…

php网站开发遇到的问题出国看病网站开发

【实例简介】3dsmax导出gltf格式插件&#xff0c;里面包括插件&#xff0c;插件使用说明&#xff0c;插件功能介绍&#xff1b;【实例截图】【核心代码】3dsmx_to_gltf格式插件└── 3dsMax to gltf 2├── 3ds Max│ ├── CHANGELOG.md│ ├── Max2Babylon│ │ …

合肥网站建设网站模板网站后台搭建图文

原文请看:http://www.douban.com/note/275619382/ 《昂着头的艺术》文/伯爵在城堡&#xff08;原载于《全球商业经典》2013年4月刊&#xff09;2003 年夏天&#xff0c;电视里到处是带着口罩的“面具侠”&#xff0c;连广告都比平常更少了。远在海南出差的老妈半夜两点钟打来一…

免费看片网站wordpress 小工具区

来源&#xff1a;传感器专家网物联网产业是传感器应用最广泛的领域之一&#xff0c;研发新型传感器&#xff0c;做传感器市场&#xff0c;都不能不考虑物联网产业的需求。2021年随着COVID-19 病毒的存在已常态化&#xff0c;防疫抗疫进入了拉锯阶段&#xff1b;波及全球的“芯片…

广东官网网站建设企业网页游戏开服表 怎么删除

前言 在我们日常的开发调试中&#xff0c;会在 URL 上添加一些特殊的小尾巴 用来显示调试界面或者开启一些特殊功能&#xff0c;当你接触了越来越多的系统后&#xff0c;你需要使用的小尾巴就变得越来越多&#xff0c;记忆和使用成本非常大&#xff0c;以及含有小尾巴的网址 在…