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

MySQL外键约束On Update和On Delete的使用说明

https://cloud.tencent.com/On Update和On Delete是SQL语言的一个标准,用于数据库外键定义,设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则...On Update表示主键表中被参考字段的值被更新时,On Delete表示主键表中被参考字段的值被删除时。...语法:foreign key (foreign_key_id) references table(primary_key_id) on update/delete parameter其中parameter...null3.set default 表示设置为默认值4.cascade 表示级联操作,就是说,如果主键表中被参考字段更新,外键表中也更新,主键表中的记录被删除,外键表中改行也相应删除。...级联更新时,依据的是之前匹配的数据,在主表更新关联的外键字段的值后,系统自动更新从表的相应外键字段的值,而不是其他未设置为主外键关联的字段,不是主外键关联的字段不受影响。

11910

InnoDB数据存储结构概述(二)

支持崩溃恢复:使用redo log和undo log记录事务的操作,保证崩溃时数据的完整性。支持外键约束:支持外键约束,保证数据的完整性。支持自动增量列:支持自动增量列,方便对表进行插入操作。...InnoDB的缺点包括:占用空间大:每个表都有自己的表空间,导致占用空间较大。内存管理较复杂:InnoDB需要手动配置缓存池等参数,需要较好的数据库管理经验。...InnoDB示例下面是一个简单的InnoDB表创建示例:CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar...的表,包含id、name和email三个字段。...除了创建表外,InnoDB还支持多种数据操作语言(DML)操作,如INSERT、UPDATE和DELETE等。这些操作与其他存储引擎类似,不再赘述。

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

    探索 PostgreSQL 基础语法:开启数据库编程之旅

    username 和 password 列是必填字段,email 列要求值唯一,以保证用户邮箱的唯一性。修改表结构随着项目的发展,可能需要对表结构进行修改,如添加新列、修改列的数据类型或约束等。...例如,将用户 John Doe 的年龄更新为 26 岁:UPDATE users SET age = 26 WHERE username = 'John Doe';删除数据使用 DELETE FROM...例如,删除年龄小于 20 岁的用户记录:DELETE FROM users WHERE age 约束数据约束用于确保数据的完整性和一致性。...如在创建 users 表时,username 和 password 列都设置了非空约束,这意味着插入记录时这两列必须提供值。外键约束外键约束(FOREIGN KEY)用于建立表之间的关联关系。...INT REFERENCES users(id));通过外键约束,可以保证 orders 表中的 user_id 列的值必须存在于 users 表的 id 列中,从而维护了数据的关联性和一致性。

    11800

    MySQL约束

    约束 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。...外键约束 (foreign key , 让多个表之间关联,从而保证数据的正确性) - 创建表时添加外键约束: - 删除键外键约束:alter table 表名 drop foreign key 外键名称...; - 添加外键:alter table 表名 add [constraint 外键名称] foreign key (外键字段名称) references 关联的主表名(字段名); * 注:外键名称可以不指定...分类: 级联更新:on update cascade 级联删除:on delete cascade 设置级联更新,级联删除 :alter table 表名 add constraint 外键名称...foreign key (外键字段名称) references 关联的主表名(字段名) on update cascade on delete cascade;

    1.6K20

    MySQL 中的 REPLACE INTO语法

    如果目标表中已存在与新插入行的主键(PRIMARY KEY)或唯一键(UNIQUE KEY)冲突的记录,则会删除旧记录并插入新记录。...FROM another_table; REPLACE INTO 的工作机制 检查是否有冲突: MySQL 会检查插入行的主键或唯一键约束是否冲突。 如果没有冲突: 行被直接插入。...如果有冲突: MySQL 会先删除冲突的行。 然后插入新的行。 注意: 删除和插入操作会触发相应的 DELETE 和 INSERT 触发器。 删除旧行时,可能导致主键或唯一键被重新分配。...否 是(当删除旧记录时会触发 DELETE 触发器) 主键/唯一键约束 插入失败或更新(INSERT ON DUPLICATE KEY UPDATE) 删除冲突记录后插入新记录 注意事项 性能问题...外键约束: 如果表定义了外键约束,删除旧记录可能导致外键相关的约束失败。 数据丢失: REPLACE INTO 会直接删除冲突的行,如果删除的行中包含重要数据,可能导致数据丢失。

    10010

    MySQL数据库操作教程

    :FOREIGN KEY --外键约束要求: --1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表 --2.数据表的存储引擎只能为InnoDB /* 3.外键列和参照列必须具有相似的数据类型。...外键约束的参照操作及功能: 1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行 2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL (ps.如果使用该选项,...在CONSTRAINT后,有个名称即为外键约束名 ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; SHOW CREATE TABLE 表名; --发现外键约束已经删除,但是还会存在索引...:FOREIGN KEY --外键约束要求: --1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表 --2.数据表的存储引擎只能为InnoDB /* 3.外键列和参照列必须具有相似的数据类型。...外键约束的参照操作及功能: 1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行 2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL (ps.如果使用该选项,

    4.9K10

    第37次文章:数据库基本语法

    在对表中数据进行删除时,需要注意一点,delete后面,需要加上需要删除的表,因为语法中涉及到了多表,而我们可能只是删除其中某个表格中的数据,其他表格仅仅是用于筛选,如果需要删除所有表格中符合筛选条件的数据...比如座位号(5)check:检查约束【mysql中不支持】。比如年龄。性别 (6)foreign key:外键。用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。...比如学生表的专业编号 3、添加约束 (1)添加约束的时机 创建表时 修改表时 (2)约束的添加分类 列级约束:六大约束语法上都支持,但是外键约束没有效果 表级约束:除了非空、默认,其他的都支持 4、案例...majorId INT REFERENCES major(majorid)#外键 ); #2.添加表级约束 /* 语法:在各个字段的最下面 【constraint 约束名】 约束类型(字段名) *...约束名】 约束类型(字段名) 【外键的引用】; */ #1、添加非空约束 ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;

    1.3K10

    Oracle - 数据库对象

    - 修改表数据 1 update t_emp2 2 set ename = 'cai22',sal = 2200 3 where empno = 1020; delete - 删除行 1 delete...一个 Transaction 起始于一条 DML (Insert、Update和Delete )语句,结束于以下的几种情况: 用户显式执行 Commit 语句提交操作或 Rollback 语句回退。...常见约束: NOT NULL 非空 UNIQUE Key 唯一键 PRIMARY KEY 主键 FOREIGN KEY 外键 CHECK 自定义检查约束 6.1 主键约束 主键用于唯一标识一条记录。...当表中的某个字段和另外一个表的主键字段相互关联时,可以设定外键约束。...CASCADE方式:将依赖表中所有外键值与主表中要删除的主键值相对应的记录一起删除 SET NULL方式:将依赖表中所有与主表中被删除的主键值相对应的外键值设为空值 可以在建表时对外键约束的删除规则进行设定

    80210

    POSTGRESQL 性能优化 数据的DML 需要进行优化吗? 当然

    实际上POSTGRESQL 的DML 只分为两类 1 INSERT 2 SELECT INSERT = UPDATE OR DELETE 数据插入和找到需要进行修改的数据,并在次将新的数据进行插入的操作...2 数据表中的FACTOR的状态和设置 3 UPDATE 的频率问题 4 Autovacuum 频率调整的问题 5 定期需要进行pg_repack 的工作 6 外键与约束的影响 我们从第一个问题看...这是非常容易被理解的,同时还有一个问题就是在数据插入中尤其是频繁插入或UPDATE 产生的锁的问题,因为索引是有顺序的,所以数据在刷到磁盘时是必须重新进行排序并在数据表空间中找到新的位置进行数据的插入或标记...2 Factor 因子,大部分数据表操作中都很少触及这个项目,但POSTGRESQL 在频繁的UPDATE 中尽量还是考虑这个问题,因为UPDATE = DELETE OLD + INSERT NEW...6 外键与约束,约束本身并不会对表的数据的插入产生过多的影响,而一些设计不好的外键并且带有级联性质的设计,才是对表DML操作带来性能问题的一个因素,减少外键级联的设计,有助于提高POSTGRESQL 的数据的

    91341

    YashanDB数据完整性

    术语定义外键/复合外键约束定义中包含的列称为外键,一个外键由多个列组成时称为复合外键。外键会引用另一个表的主键或唯一键,复合外键则需引用相同数量和数据类型列的复合主键或复合唯一键。...# 父表的修改与外键的关系删除或更新父表数据可能会破坏外键约束。...DELETE SET NULL 删除置空(DELETE SET NULL)是指当父表被删除时,对应被引用键值在子表中的所有行的外键被设置成NULL。...UPDATE SET NULL 更新置空(UPDATE SET NULL)是指当父表更新时,对应被引用键值在子表中的所有行的外键被设置成NULL。...# 检查性约束检查约束具备强制执行具体的完整性规则的能力,对指定列或列集创建检查性约束,可以保证表中的数据一定满足指定的条件。如果DML语句违反了检查性约束的条件,执行会报错。

    5900

    【愚公系列】2022年01月 Mysql数据库-约束

    完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。...一、数据库约束 1.约束的分类 约束的概念 对表中的数据进行限定,保证数据的正确性、有效性、完整性!...外键约束 FOREIGN KEY ON UPDATE CASCADE 外键级联更新 FOREIGN KEY ON DELETE CASCADE 外键级联删除 2.主键约束 主键约束特点 主键约束包含...NULL; 6.外键约束 外键约束概念 让表和表之间产生关系,从而保证数据的准确性!...DELETE FROM USER WHERE NAME='王五'; -- 所以我们需要添加外键约束,让两张表产生关系 外键约束格式 CONSTRAINT 外键名 FOREIGN KEY (本表外键列名

    55810

    mysql的建表语句_mysql如何查询建表语句

    ; alter table Course add foreign key(Cpno) references Course (Cno); 向表中插入数据(由于Cpno是外键,故先添加参考列,再添加外键列...当插入的数据违反了这个规则,就会产生ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails...如下图: 当要删除或者更新一条数据时,由于有外码约束,不可以直接使用delete或者update语句,需先取消外码约束,再进行操作,最后再恢复外码约束。.../*取消外码约束*/ set foreign_key_checks = 0; /*删除或更新数据*/ delete/update from 表名 where 条件; /*恢复外码约束*/ set foreign_key_checks...就以课程表为例,要删除数据要经过三个步骤,取消外键约束,删除数据,恢复外键约束,但如果没有外键约束,就可以直接删除数据。因此,在以后设计数据库的时候尽量避免外码约束的使用。

    8.4K20

    SQL Server触发器创建、删除、修改、查看示例步骤

    这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行 完成后﹐与该触发器相关的这两个表也被删除。 Deleted表存放由于执行Delete或Update语句而要从表中删除的所有行。...Inserted表存放由于执行Insert或Update语句而要向表中插入的所有行。...After触发器在一个Insert,Update或Deleted语句之后执行﹐进行约束检查等动作都在After触发器被激活之前发生。After触发器只能用于表。...一个表或视图的每一个修改动作(insert,update和delete)都可以有一个instead of 触发器﹐一个表的每个修改动作都可以有多个After触发器。...四﹕触发器的执行过程 如果一个Insert﹑update或者delete语句违反了约束﹐那幺After触发器不会执行﹐因为对约束的检查是在After触发器被激动之前发生的。

    1.5K30

    SQL Server 数据库学习「建议收藏」

    (5)创建检查约束,检查约束可以把输入的数据限制在指定范围。 设计——选择一列——右击 check约束 (6)创建外键:外键是建立两个表数据之间连接的一列或多列。...通过将保存表中主键值的一列或多列添加到另一个表中,可以创建两个表之间的连接。这个列为第二个表的外键。...左外链接: 右外连接: 完全连接:返回两个表中所有匹配行和不匹配行 3.3.2 insert 插入语句 3.3.3 update语句修改指定的数据 3.3.4 delete 语句删除指定数据...update,insert,delete等sql语句修改表中的数据,而对视图只能进行select操作。...但是也存在可更新的视图,对于这类视图的update,insert和delete等操作最终会作用于与其相关的表中数据。因此,表是数据库中数据存储的基础,而视图只是为了满足某种查询要求而建立的一个对象。

    1.6K10

    深入解析MySQL索引与约束,提升数据库性能的秘诀

    聚集索引是主键对应的那个B+树;会存储对应的行数据。(2)辅助索引;或称为二级索引。比如通常设计的普通索引或组合索引,只有索引信息和主键ID信息,没有行数据。按照列属性分为:(1)主键索引。...允许出现相同的索引内容。INDEX(key)-- orKEY(key[...])(4)前缀索引。只比较前几个字符的长字符串。按照列的个数分为:(1)单列索引。(2)组合索引。对表上的多个列进行索引。...2.1、外键约束外键用来关联两个表,来保证参照完整性;MyISAM 存储引擎本身并不支持外键,只起到注释作用;而 innodb 完整支持外键,并具备事务性。...CASCADE ON UPDATE CASCADE) engine=innodb;-- 被引用的表为父表,引用的表称为子表;-- 外键定义时,可以设置行为 ON DELETE 和 ON UPDATE,...外键定义时,可以设置行为 ON DELETE 和 ON UPDATE,行为发生时的操作可选择:(1)CASCADE,子表做同样的行为。(2)SET NULL, 更新子表相应字段为 NULL。

    14710

    Python 高级笔记第二部分:数据库的概述和MySQL数据表操作

    ,所以没有办法用第一种方法 外键约束和表关联关系 ⭐️外键约束:foreign key 建立表与表之间的某种约束的关系,由于这种关系的存在,能够让表与表之间的数据,更加的完整,关连性更强,为了具体说明创建如下部门表和人员表...注:约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、关联性 外键约束分主表和从表:若同一个数据库中,B表的外键与A表的主键相对应,则A表为主表,B表为从表。...✨解除外键约束 通过外键名称解除外键约束 alter table 表名 drop foreign key 外链名; drop index 索引名 on 表名 注意:删除外键后发现desc查看 MUL...✨级联动作:on delete / on update restrict(默认) : 当主表删除或修改记录时,如果从表中有相关联记录则不允许主表变动 cascade :当主表删除记录或更改被参照字段的值时...如果多个表存在一定关联关系,可以多表在一起进行查询操作,其实表的关联整理与外键约束之间并没有必然联系,但是基于外键约束设计的具有关联性的表往往会更多使用关联查询查找数据。

    1.8K20

    oracle中更改表名语句,转:取Oracle 表名 字段名 注释等实用语句

    4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询): select * from user_constraints c wherec.constraint_type = ‘R’...and c.table_name = 要查询的表 查询外键约束的列名: select * from user_cons_columns cl where cl.constraint_name= 外键名称...查询引用表的键的列名: select * from user_cons_columns cl wherecl.constraint_name = 外键引用表的键名 5、查询表的所有列及其属性 select...grant select,update on表1 to user1; 31.把对表表1中列1和列2修改的权限授予user1 grant update(列1,列2) on表1 to user1; 32....option; 33.从用户user1撤销对表1查询和修改的权限 revoke select,update on表1 from user1;

    1.3K50

    MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)

    目录 1 表的约束 约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign...以上仍然存在一个问题,当在员工表中输入不存的部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用外键约束来解决。 【概念】什么是外键约束?...外键,就是从表中与主表主键对应的那一列,如:员工表中的dep_id,其中,主表是一方,用来约束别人的表,从表可以是多方,被别人约束的表。 注意:外键可以为NULL,但是不能是不存在的外键值。 ?...id,同时希望自动改动员工表中的id,这时就需要进行级联操作,需要在添加外键的时候设置级联: 添加级联操作:ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY...(外键字段名称) REFERENCES 主表名称(主表列名称)  ON UPDATE CASCADE ON DELETE CASCADE ; 分类:级联更新 ON UPDATE CASCADE

    14.6K21

    视图和索引(数据库学习)

    (insert、update、delete)视图修改基本表中数据,需满足可更新条件: -|:只引用一个基本表的列。...(通过记录表中的关键值指向基本表中的记录) 根据组织方式分为:(最多存在250个) -|:聚集索引,会对表中数据进行物理排序。...(只能有一个,当定义主键约束时,会自动用主建列作为聚合索引建) -|:非聚集索引,不会对表中数据进行物理排序。...-|:对小型表进行索引可能不会产生优化效果。 -|:对于主键和外键列应考虑建索引。...(主键查询、外键连接) -|:很少在查询中使用的列及值很少的列不应考虑建索引。 -|:视图中如果包含聚合函数或连接时,创建视图的索引可以显著提高查询性能。

    1.1K30
    领券