首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL约束删除和更新总结

约束删除/更新行为 行为 说明 NO ACTION 当在父表中删除/更新对应记录,首先检查该记录是否有对应,如果有则不允许删除/更新。...(与RESTRICT一致) RESTRICT 当在父表中删除/更新对应记录,首先检查该记录是否有对应,如果有则不允许删除/更新。...(与NOT ACTION一致) CASCADE 当在父表中删除/更新对应记录,首先检查该记录是否有对应,如果有,则也删除/更新在子表总记录。...SET NULL 当在父表中删除对应记录,首先检查该记录是否有对应,如果有则设置该子表中该键值为null(这就要求该允许取null)。...id改为6,emp表中id也会跟着改变 当我们删除父表中id为6,我们可以看到子表emp中存在外关联数据也会被删除

37010
您找到你想要的搜索结果了吗?
是的
没有找到

mysql如何添加一个表

1:创建一个父表,主键作为子表: 1 create table province( 2 pId int primary key auto_increment, 3 pName varchar...(20) 4 ); 2:创建子表,是父表主键: 1 create table user( 2 userId int primary key auto_increment, 3 userName varchar...(40), 4 pid int, 5 foreign key(pid) references province(pId) 6 ); 给一张表添加,即给子表添加主键规则: 在子表声明一个字段pid...int,用于作为子表,foreign key(子表字段) references 父表表名(父表主键字段名); 3:创建好数据表添加约束: alter table user add...foreign key(pid) references province(pId); alter table 子表数据表名 add foreign key(子表键名称) references 父表数据表名称

4.3K70

MySQL 外码约束原理:如何解决数据库添加数据产生外码()约束?

文章目录 前言 一、插入新数据时报错约束? 二、对于出错 SQL 语句分析 三、对于外码约束分析 四、如何处理约束?...总结 ---- 前言 我们在使用 MySQL 数据库,添加数据如果设计不合理很容易出现外码约束情况,为什么会产生这样问题?那我们该如何处理这一问题呢?依据又是什么?...我们在 Course 表中插入课程号为 1 数据提示违反了约束,插入命令如下: insert into course(cno,cname,cpno,ccredit) values('1','数据库...但是我们反观上面操作,第一个插入就是 cno=‘1’ 数据,cno=‘5’ 还没有插入,很显然不满足参照完整性规则。 四、如何处理约束?...---- 总结 本文我们掌握了 MySQL 数据库如何在设计不合理遇到外码约束问题,并通过经典案例为大家分析了为何会出现这样问题,同时顺着思路来设计业务解决方案。

3K20

MySQL 数据库添加数据为什么会产生外码()约束?原理就是什么?如何解决?

文章目录 前言 一、插入新数据时报错约束? 二、对于出错 SQL 语句分析 三、对于外码约束分析 四、如何处理约束?...总结 ---- 前言 我们在使用 MySQL 数据库,添加数据如果设计不合理很容易出现外码约束情况,为什么会产生这样问题?那我们该如何处理这一问题呢?依据又是什么?...我们在 Course 表中插入课程号为 1 数据提示违反了约束。...但是我们反观上面操作,第一个插入就是 cno=‘1’ 数据,cno=‘5’ 还没有插入,很显然不满足参照完整性规则。 四、如何处理约束?...---- 总结 本文我们掌握了 MySQL 数据库如何在设计不合理遇到外码约束问题,并通过经典案例为大家分析了为何会出现这样问题,同时顺着思路来设计业务解决方案。

2.9K31

详解数据库InnoDB存储引擎

InnoDB是MySQL数据库中最常用存储引擎之一,它是一个支持ACID事务高性能引擎,提供了一些重要功能,如行级锁定、约束和崩溃恢复等。...MVCC允许多个事务同时访问同一数据,而不会相互干扰或阻塞。每个事务都有自己版本号,一个事务修改数据,会创建一个新版本,而版本会保留在数据库中,以供其他事务使用。...这意味着一个事务修改某一行数据,其他事务无法同时修改该行数据。这样可以避免并发更新数据冲突。 此外,InnoDB还支持约束。这意味着可以在不同表之间建立关系,并强制执行这些关系。...例如,删除一个表中数据,可以自动删除与该表相关联其他表中数据,以保持数据一致性。 2....总结 InnoDB存储引擎是MySQL数据库中最常用存储引擎之一,它支持ACID事务、MVCC技术、行级锁定和约束等重要功能,提供了高性能和可靠性。

50720

mysql常见建表选项和约束

create table选项 指定列选项:default 插入一个新行到表中并且没有给该列明确赋值,如果定义了列默认值,将自动得到默认值 ;如果没有,则为null。...参照完整性约束,保证一个或两个表之间参照完整性,是构建于一个表两个字段或者是两个表两个字段之间参照关系 注意: 具有约束值不能随便给,必须满足所引用主键取值 一张表中可以定义多个...dept(deptid) 删除规则 删除父表中行时,如果子表中有依赖被删除父行子行存在,那么就不允许删除,并抛出异常(默认对外使用on delete restrict或on delete...no action选项) 在定义约束,可以通过使用on delete cascade或on delete set null来改变外加默认删除规则 on delete cascade:级联删除,...删除父表中行时,如果子表中有依赖于被删除父行子行存在,那么联通子行一起删除,相当于rm -f on delete set null:删除父表中行时,如果子表中有依赖于被删除父行子行存在,那么不删除

11910

Python面试题大全(四):数据库篇

目录 数据库 MySQL 198.主键 超 候选 199.视图作用,视图可以更改么?...---- 数据库 MySQL 198.主键 超 候选 主键:数据库表中对存储数据对象予以唯一和完整标识数据列或属性组合。...1.delete 语句执行删除过程是每次从表中删除一行,并且同时将该行删除操作作为事务记录在日志中保存以便进行回滚操作。...不过memcache还可以用于缓存其他东西,例如图片,视频等等 2、Redis不仅仅支持简单k/v类型数据,同时还提供list,set,hash等数据结构存储 3、虚拟内存-redis物流内存用完...1,codis 目前用最多集群方案,基本和twemproxy一致效果,但它支持在节点数量改变情况下,节点数据客恢复到新hash节点 2redis cluster3.0自带集群,特点在于他分布式算法不是一致性

54010

MySQL 系列】MySQL 语句篇_DDL 语句

我们需要同步修改代码可能包括那些使用了此表:存储过程、视图、函数、触发器、约束 (在较 MySQL 版本中)以及应用程序。...读取该列MySQL 自动计算该列值; 存储生成列:插入或修改数据MySQL 自动计算该列值并存储在磁盘上。...读取该列MySQL 自动计算该列值。...RESTRICT: 如果被引用表中一行在该表中有匹配行,试图删除或更新被引用表中行时会引发 MySQL 错误。这是默认策略。...它可以通过名字删除任何约束,并不仅仅是; 3.2.4、CASCADE 策略 如果 ON DELETE 和 ON UPDATE 使用了 CASCADE 策略: 父表行被删除时候,子表中匹配行也会被删除

13910

mysql基本命令

进阶 1. 适用于一对多,一对一,多对多三种情况 一对多 典型案例员工与部门,一个部门对应于多个员工,一个员工对应于一个部分,所以要在员工表中设置部门id列,并设置为,与部门表id关联。...mysql如何控制事务 通过select @@autocommit;语句查询自动提交是否开启,1表示开启,0表示没有开启 查询结果为1,自动提交开启,执行sql语句(insert into,alter...同时,第二个事务也修改这个表中数据,这种修改是向表中插入一行新数据。...那么,以后就会发生操作第一个事务用户在新开启事务中发现表中还有没有修改数据行,就好象发生了幻觉一样(用户1开启事务查看数据,然后同时有用户2开启事务对数据修改并提交,用户1在当前事务没有发现数据改变...一个表只能有一个主键,且主键取值不能缺失,即不能为空值(Null)。 :在一个表中存在另一个表主键称此表

1.2K10

⑦【MySQL】什么是约束?如何使用约束条件?主键、自增、、非空....

约束 ⑦【MySQL】约束条件 1. 约束基本使用 2. 约束 ⑦【MySQL】约束条件 1. 约束基本使用 约束: 什么是约束? 约束是作用于表中字段上规则,用于限制存储在表中数据。...约束 如何添加约束?: 方式一(在创建表指定约束): CREATE TABLE 表名( 字段名 数据类型, ......键名称 FOREIGN KEY(字段名) REFERENCES 主表(主表字段名); 删除/更新行为: NO ACTION:在父表进行更新/删除,首先检查记录是否存在外,存在则不允许删除...(与NO ACTION行为一致) CASCADE:在父表进行更新/删除,首先检查记录是否存在外,存在则同时对外关联子表进行相应更新/删除 SET NULL:在父表进行更新/删除,首先检查记录是否存在外...,存在则将关联字段值设置为null(前提是关联字段可以为null) SET DEFAULT:在父表进行更新/删除,首先检查记录是否存在外,存在则将关联字段值设置为一个默认值(Innodb

433100

【Java 进阶篇】MySQL约束详解

5.3 修改约束 要修改约束,通常需要先删除约束,然后再添加新约束。...例如,如果要更改订单表上客户外约束,可以按照以下步骤进行: 删除约束: ALTER TABLE 订单表 DROP FOREIGN KEY 客户ID; 添加新约束: ALTER TABLE...6.3 使用级联操作谨慎 使用级联操作,要特别小心,确保其不会导致意外数据删除或更新。建议仔细测试级联操作影响。 7....这些索引需要维护,因此在插入、更新和删除操作时会导致额外开销。 级联操作: 使用级联操作,数据库需要执行额外删除或更新操作,这可能会导致性能下降。...如果您在使用约束遇到问题或需要进一步帮助,请随时咨询数据库专家或参考MySQL官方文档。

74030

MySQL——锁(全面总结)

因为读取并不会改变数据,所以可以多个事务同时获取共享锁,称这种情况为锁兼容。但若有其他事务T3想获得行R排他锁,则其必须等待事务T1、T2释放行r上面的共享锁,称这种情况为锁不兼容。...对于辅助索引,执行类似select * from z where b = 3 for update;加锁语句,会加上临锁,并且下一个键值范围也会加上间隙锁。...这也很好理解,修改和删除一行时候,必须获得强锁,禁止这一行其他并发,以保障数据一致性。) InnoDB支持多粒度锁定,这种锁定允许事务在行级上锁和表级上同时存在。...参考:http://blog.itpub.net/15498/viewspace-2141640/ 与锁 如果没有为显式添加索引,InnoDB自动为创建索引,这样子避免表锁。...ID UPDATE 实际上是删除行,插入新行。

6.4K40

MYSQL(基本篇)——一篇文章带你走进MYSQL奇妙世界

: 行为 说明 NO ACTION 当在父表中删除/更新对应记录,首先检查该记录是否有对应,如果有则不允许删除/更新。...(与 RESTRICT 一致) 默认行为 RESTRICT 当在父表中删除/更新对应记录,首先检查该记录是否有对应,如果有则不允许删除/更新。...(与 NO ACTION 一致) 默认行为 CASCADE 当在父表中删除/更新对应记录,首先检查该记录是否有对应,如果有,则 也删除/更新在子表中记录。...SET NULL 当在父表中删除对应记录,首先检查该记录是否有对应,如果有则设置子表 中该键值为null(这就要求该允许取null)。...,进行拆分使用 实现:在任意一方加入,关联另外一方主键,并且设置为唯一(UNIQUE) 多表查询概述: 指从多张表中查询数据 当我们同时查询两张表,会出现笛卡尔积现象,我们目的就是消除多余笛卡尔积

1.6K40

MySQL Innodb和Myisam

使用,检查插入、更新和删除以确保它们不会导致相关表之间不一致。...二级索引列被更新二级索引记录被删除标记,新记录被插入,并最终被删除标记记录被清除。 二级索引记录被删除标记或二级索引页被更新事务更新,InnoDB在聚集索引中查找数据库记录。...列表中点是新子列表尾部与子列表头部相交边界。 InnoDB将页读入缓冲池,它最初将它插入到中点(子列表头部)。... MySQL 删除一个表或一个数据库,它会删除一个或多个.frm文件以及InnoDB数据字典中相应条目。 不能InnoDB简单地通过移动.frm 文件在数据库之间移动表。...是更好选择 对INSERT或UPDATE有很好支持;DELET,InnoDB不会重新建立表,而是一行一行删除具体行数 MyISAM只要简单读出保存好行数,count(*)语句包含 where

1.7K20

MySQL(五)之DDL(数据定义语言)与六大约束

接下来,我将分享MySQLDDL用来对数据库及表进行操作。   mysql中保存了很多数据库、一个数据库中可以保存很多表。   ...3)删除检约束       格式:ALTER TABLE DROP FOREIGN KEY       注意:约束名 指不是被约束修饰字段名,切记,而是我们在创建约束关系时取名字...在3.7中就讲解了如何删除关系。...也就是说,不能说这个表是xxx(该表中被约束修饰字段名),这种说法是错误,但是大多数人已经习惯了这样,虽然影响不大,但是在很多时候需要理解一个东西,会造成一定困扰。     ...  4.5、默认约束     DEFAULT:指定这一列默认值为多少,比如,男性同学比较多,性别就可以设置为默认男,如果插入一行记录,性别没有填,那么就默认加上男     create table

1.8K90

MySQL怎样进行多表设计与查询?什么是MySQL事务和索引?

2、一对多- 2.1 问题分析 思考:在员工表和部门表中,部门数据可以直接删除,然而还有部分员工归属于该部门下,此时如果强行删除就会出现数据不完整、不一致问题。...(添加约束解决) 2.2 添加约束 1)语法 -- 创建表指定 create table表名( 字段名 数据类型, ......通过逻辑,可以很方便解决上述问题。 3、一对一 1)概述 一对一关系也非常常见,如用户登录,一个用户只能对应一个密码。又如一个用户只能有一个身份证号。...MySQL事务默认是自动提交,所以执行一条DML语句MySQL会立即隐式提交事务。...比如下面这个查询语句 select * from user where age = 45; 简单分析一下: 1)没有索引,指针默认从表头依次向下查找匹配,匹配成功,如果还没到表尾,则不能立即返回

15710

MySQL约束使用

什么是约束在MySQL中,约束用于确保两个表之间数据一致性。约束是一种限制,它将一个表中列与另一个表中列相关联。具体来说,它要求在一个表中某个列中值必须在另一个表某个列中存在。...约束可以确保数据完整性和一致性,防止数据被删除或修改时发生错误。在MySQL中,约束由FOREIGN KEY关键字和REFERENCES子句定义。...如何创建约束在MySQL中,创建约束需要以下步骤:第一步:创建主表和从表约束通常涉及到两个表,一个主表和一个从表。主表包含一个列或一组列,其值将在从表中进行比较。...以下是如何使用约束一些示例:插入数据:向"orders"表中插入数据,如果在"customer_id"列中插入一个不存在于"customers"表中值,则会引发约束错误。...:从"customers"表中删除一行,如果在"orders"表中存在与该行相关联"customer_id"值,则会引发约束错误。

4K30

基本 SQL 之数据库及表管理

,UNIQUE 是不能唯一确定一行数据,那是因为 UNIQUE 对空值无法约束。 你不让我将字段值赋值为表中已知行数据该字段值,那我可以不赋值,该字段值为空。...所以,存在一种情况就是,已经对表某一字段进行了 UNIQUE 约束,但表中大量行数据该字段值为空,你还能通过该字段唯一确定一行吗?...这就用到一个叫『』,两张表之间微妙关系我们可以叫做约束。 举个例子吧,自己画图太丑,网上随便找表结构示意图: ? ?...上述示例中,我们管订单表中 Id_P 字段叫做『』,它其实又是 persons 表『主键』。...创建表时候可以同时指定约束,修改表结构又分为修改列名和修改列数据类型,而同时我们要小心谨慎使用 drop 删除表。

1.8K30
领券