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

MySQL如果外键不存在或不等于指定的键,请从表1中选择全部

MySQL是一种关系型数据库管理系统,可以用于存储和管理大量结构化数据。在数据库中,外键是一种用于建立表之间关系的机制,通过外键可以实现数据的一致性和完整性。

当外键不存在或不等于指定的键时,根据需要可以采取以下几种处理方式:

  1. 严格模式(STRICT):MySQL会拒绝插入或更新操作,抛出错误提示。
  2. 设置为NULL:当外键不匹配时,将外键字段设置为NULL值。这适用于允许外键为空的情况。
  3. 设置默认值:当外键不匹配时,将外键字段设置为指定的默认值。这适用于外键没有对应关联值时的默认情况。
  4. 级联操作:可以通过设置级联操作来自动处理外键不匹配的情况。常见的级联操作包括:
    • CASCADE:删除或更新主表的键时,自动删除或更新从表中相关的外键。
    • SET NULL:删除或更新主表的键时,将从表中相关的外键字段设置为NULL值。
    • SET DEFAULT:删除或更新主表的键时,将从表中相关的外键字段设置为指定的默认值。

根据具体的业务需求和数据完整性要求,选择合适的处理方式。在实际应用场景中,外键可以用于建立表与表之间的关联关系,确保数据的一致性和完整性。

对于MySQL数据库,腾讯云提供了云数据库 MySQL(TencentDB for MySQL)产品。它是一种稳定、可靠、高性能的云数据库解决方案,具备自动备份、数据灾备、监控报警、高可用等特性。您可以通过以下链接详细了解腾讯云 MySQL 产品:腾讯云 MySQL 产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL 数据库基础知识(系统化一篇入门)

, name varchar(20), primary key(id) ); 5.2、约束 如果A主键是B中字段,则该字段称为B;另外表A称为主表,B称为。...是用来 实现参照完整性,不同约束方式将可以使两张紧密结合起来,特别是修改删除级联操作将使 得日常维护更轻松。主要用来保证数据完整性和一致性。...TABLE 名 ADD CONSTRAINT 键名 FOREIGN KEY (字段) REFERENCES 主表 (主键字段); 示例:创建一个学生 MySQL命令: create table...删除外语法如下: alter table 名 drop foreign key 键名; 示例:删除外 MySQL命令 : alter table class drop foreign key...如果某条记录在右不存在则在右中显示为null。

4.6K60

MySQL复习笔记(2)-约束

DQL查询语句 查询满足条件数据 SELECT 字段 FROM 名 WHERE 条件; MySQL运算符 > 大于 < 小于 <= 小于等于 >= 大于等于 = 等于 不等于 !...比如发生意外停机存储介质损坏。这时,如果没有采取数据备份和数据恢复手段与措施,就会导致数据丢失,造成损失是无法弥补与估量。...字段类型 default 值 约束 一个字段引用另一个主键 主表: 主键所在,约束别人,将数据给别人用 副/所在,被约束,使用别人数据 创建 CREATE...ALTER TABLE 名 DROP FOREIGN KEY(约束名); 级联 在修改和删除主表主键时,同时更新删除副键值,称为级联操作 ON UPDATE CASCADE –...两种建原则: 唯一:主表主键和(唯一),形成主外关系,唯一UNIQUE 是主键:主表主键和主键,形成主外关系 一对多 例如:班级和学生,部门和员工,客户和订单,

89820
  • MySQL删库到跑路_高级(一)——数据完整性

    C、引用完整性:在删除和输入记录时,引用完整性保持之间已定义关系。引用完整性确保键值在所有中一致,不能引用不存在值.如果一个。...2、主键 MySQL主键名总是PRIMARY, 当创建主键约束时,如果存储引擎是innoDB,系统默认会在所在列和列组合上建立对应唯一索引。...四、参照完整性 1、参照完整性简介 MySQL参照完整性一般是通过MySQL(foreign key)实现(仅innoDB支持)所引用列必须是主键。...声明包括三个部分: A、哪个列列组合是 B、指定参照和列 C、参照动作[cascade(级联操作),restrict(拒绝操作),set null(设为空),no action,set...如果约束指定了参照动作,主表记录做修改,删除,引用列会做相应修改,不修改,拒绝修改设置为默认值。 引用列名必须是主键,且在删除引用时必须删除引用关系或者删除当前

    1.9K20

    超详细MySQL三万字总结

    MySQL 中也可以使用双引号做为分隔符。 不指定使用 null,表示插入空值。 蠕虫复制 什么是蠕虫复制 将一张已经存在数据复制到另一张中。...什么是约束: 什么是:在从中与主表主键对应那一列,如:员工 dep_id 主表: 一方,用来约束别人 : 多方,被别人约束 创建约束语法: 1、新建时增加...: [CONSTRAINT] [约束名称] FOREIGN KEY(字段名) REFERENCES 主表名(主键字段名) 2、已有增加: ALTER TABLE ADD [CONSTRAINT...] [约束名称] FOREIGN KEY (字段名) REFERENCES 主表(主键字段名); 案例: -- 1) 删除副/ employee drop table employee;...两种建原则: 一对一原则 说明 唯一 主表主键和(唯一),形成主外关系,唯一 UNIQUE 是主键 主表主键和主键,形成主外关系 数据库设计 数据规范化 什么是范式

    3.4K30

    mysql学习总结04 — SQL数据操作

    12.1 概念 foreign key : 一张()中有一个字段(),保存值指向另外一张(主表)主键 12.2 操作 增加 方案1:创建时增加(类似主键) 基本语法...创建时会自动增加一个普通索引,但删除时仅删除外不删除索引,如果要删除需要手动删除 基本语法: alter table drop foreign key ; alter table...字段与主表主键字段类型完全一致 字段与主表主键字段基本属性相同 如果是在后增加,对数据有要求(数据与主表关联关系) 只能使用innodb存储引擎,myisam不支持 12.4...约束概念 约束主要约束主表操作,仅约束不能插入主表不存在数据,约束约束了例如: 插入数据,不能插入对应主表主键不存在数据 主表删除数据,不能删除被引入数据 约束保证了数据完整性...:级联模式,一起操作,主表变化,数据跟随变化 set null:置空模式,主表变化(删除),对应记录设置为空,前提是中对应字段允许为空 添加约束模式: 基本语法: add foreign

    5.2K30

    MySQL学习笔记(基础篇)

    & MySQL:这本书第一章就开始讲PHP如何操纵MySQL,根据书中真是案例一步步带入PHP和MySQL聚合函数、PHP内置函数以及如何联合进行调试 PHP+MySQL开发实战:本书针对方向为实操...数据库联结查询思想 a 有的数据 b 也必须要有 b 依赖 a 所以 b 数据不给删除 必须要 a 删除了 b 才能删除 反正 就是维护两张或者多张数据一致性 关联 是两张多张逻辑关系...关联不需要 关联只是描述逻辑 它说是 你想成关联字段就行了 不是说关联就一定不能是 关联字段也可以是 但是尽量不要是 文章 -> 帐户 评论 ->...帐户 这个时候有约束的话 帐户就不给删除 因为要保持数据一致性 你帐户删除了 那文章 评论就找不到帐户了 要删除帐户就得把 这个帐户 文章 以及 评论全部删除了 才能那个删除帐户...如果您对这篇文章有什么意见或者建议,评论与我讨论. 如果您觉得还不错的话~可以点个喜欢鼓励我哦. 如果您想和我一起学习,毫不吝啬私信我吧~ 介个是我个人博客,欢迎参观哦~

    2.8K110

    数据库

    ,姓名,年龄,身份证号是唯一确定这个人,它就是主键 是与另一张关联,能确定另一个记录 比如: 有三个: 客户:记录客户信息,如客户编号,客户名称,地址,联系方式等 商品:记录商品信息...,比如商品编号,商品名称,品牌,单价,库存数量等 订单:包括订单信息 一条订单记录:包括客户编号,商品编号,商品数量,金额等属性 客户编号是客户主键,它就是订单 约束:一种限制,通过对表数据做出限制...好处:可以使得两张关联,保证数据一致性和实现一些级联操作; 定义 mysql> create table teacher(id int primary key not null auto_increment...table student drop foreign key teacher_id; 在父上进行update/delete以更新删除在子表中有一条多条对应匹配行候选时,父行为取决于:在定义子表指定...,还列出左table1(左连接)、table2(右连接)、两个(全连接)中所有符合WHERE过滤条件数据行。

    2.2K30

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

    ; 注意: 起始索引0开始,起始索引 = (查询页码-1)*每页显示记录数 分页查询是数据库方言,不同数据库有不同实现方法(MYSQL中是LIMIT) 如果查询是第一页数据,起始索引可以省略,...(与 NO ACTION 一致) 默认行为 CASCADE 当在父中删除/更新对应记录时,首先检查该记录是否有对应如果有,则 也删除/更新在子表中记录。...SET NULL 当在父中删除对应记录时,首先检查该记录是否有对应如果有则设置子表 中该键值为null(这就要求该允许取null)。...:在多一方建立,指向一一方主键 多对多 关系:一个学生选择多个课程,一个课程有多个学生选择 实现:建立第三张中间,中间至少包含两个,分别关联两方主键 一对一 关系:一对一关系常用于单内容过多...,进行拆分使用 实现:在任意一方加入,关联另外一方主键,并且设置为唯一(UNIQUE) 多表查询概述: 指多张中查询数据 当我们同时查询两张时,会出现笛卡尔积现象,我们目的就是消除多余笛卡尔积

    1.6K40

    MySQL约束详接

    一个可以有很多列都分别限定了非空 空字符串''不等于NULL,0也不等于NULL  添加非空约束 CREATE TABLE 名称( 字段名 数据类型,   字段名 数据类型 NOT NULL...删除时需要指定唯一索引名,唯一索引名就和唯一约束名一样。 如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和()中排在第一个列名相同。也可以自定义唯一性约束名。...比如:员工员工所在部门选择,必须在部门能找到对应部分。...FOREIGN KEY关键字  主表和/父和子表 主表(父):被引用,被参考(子表):引用别人,参考别人 例如:员工员工所在部门这个字段值要参考部门:部门是主表,员工...总结:约束关系是针对双方添加了约束后,主表修改和删除数据受约束添加了约束后,添加和修改数据受约束在从上建立,要求主表必须存在删除主表时,要求先删除,将从中外引用该主表关系先删除

    1.8K10

    【重学 MySQL】六十六、约束使用

    主键非空:主键不能包含空值,但允许在外中出现空值。 列匹配:在主表名后面指定列名列名组合,这个列组合必须是主表主键。同时,中列数目必须和主表主键中列数目相同。...创建(CREATE)时就指定约束的话,先创建主表,再创建时,先删先删除外约束),再删除主表 当主表记录被参照时,主表记录将不允许删除,如果要删除数据,需要先删除中依赖该记录数据...,然后才可以删除主表数据 在“”中指定约束,并且一个可以建立多个约束 列与主表被参照列名字可以不相同,但是数据类型必须一样,逻辑意义一致。...NO ACTION RESTRICT: 含义:这两种约束等级在MySQL行为是相似的。它们都会阻止对主表中被引用记录进行删除更新操作,如果子表中存在引用该记录记录。...例如:在员工中,可以添加一个员工信息,它部门指定为一个完全不存在部门。 问题3:那么建和不建约束和查询有没有关系? 答:没有 在 MySQL 里,约束是有成本,需要消耗系统资源。

    7810

    MySQL 系列】MySQL 语句篇_DDL 语句

    2.1.3、选择数据库 在 MySQL 服务器中,可能有多个数据库。如果要进行查询等操作,首先应该先选择要进行操作数据库。你可以使用 USE 语句选择或者切换数据库。...如果还没有选择数据库,则可以使用 db_name.table_name 格式指定要新建所在数据库; IF NOT EXISTS 指示只有给定不存在时候才进行创建。它是可选。...约束有主键、、CHECK、UNIQUE 等; ENGINE=storage_engine 子句指定使用存储引擎。它是可选如果指定此选项,则采用服务器默认存储引擎。...相对于主键而言,用来引用其他通过子表一个多个列对应到父主键唯一键值,将子表行和父行建立起关联关系。 例如,Sakila 示例数据库中 country 和 city 。...你也不能为一个城市设定一个不存在 country_id,否则这个城市数据就是错误。 3.2.1、创建 通常,所属被称作子表,被引用被称作父

    24810

    MySQL 最经常使用一千行

    -- 每一个都有一个名字,能够通过 constraint 指定 存在外。称之为(子表),键指向,称之为主表(父)。...] 此时须要检測一个须要约束为主表已存在值。...在没有关联情况下,能够设置为null.前提是该列,没有not null。 能够不指定主表记录更改更新时动作,那么此时主表操作被拒绝。...假设指定了 on update on delete:在删除更新时,有例如以下几个操作能够选择: 1. cascade,级联操作。主表数据被更新(主键值更新),也被更新(键值更新)。...主表记录被删除,表相关记录也被删除。 2. set null。设置为null。主表数据被更新(主键值更新),被设置为null。主表记录被删除,表相关记录被设置成null。

    1.4K10

    MySQL数据库操作教程

    其中数字长度或者是否有符号位都必须相同 但是,若是字符长度,则可以不同 */ --4.列和参照列必须创建索引,如果不存在索引。!MySQL将自动创建索引!...约束参照操作及功能: 1.CASCADE:从父删除更新且自动删除更新子表中匹配行 2.SET NULL:从父删除更新行,并设置子表中列为NULL (ps.如果使用该选项,...其中数字长度或者是否有符号位都必须相同 但是,若是字符长度,则可以不同 */ --4.列和参照列必须创建索引,如果不存在索引。!MySQL将自动创建索引!...约束参照操作及功能: 1.CASCADE:从父删除更新且自动删除更新子表中匹配行 2.SET NULL:从父删除更新行,并设置子表中列为NULL (ps.如果使用该选项,...,但是在数据B不存在符合连接条件记录,将生成一个所有列为空额外B行 */ --左连接,显示左全部记录及右符合连接条件记录 --示例操作(假设前提条件已满足) SELECT book_id

    4.8K10

    MySQL】04_约束

    例如:学生、课程、选课表:选课表学生和课程要分别参考学生和课程,学生和课程是主表,选课表是。 特点: 列,必须引用/参考主表主键唯一约束列。为什么?...创建(CREATE)时就指定约束的话,先创建主表,再创建时,先删先删除外约束),再删除主表 当主表记录被参照时,主表记录将不允许删除,如果要删除数据,需要先删除中依赖该记录数据...,然后才可以删除主表数据 在“”中指定约束,并且一个可以建立多个约束 列与主表被参照列名字可以不相同,但是数据类型必须一样,逻辑意义一致。...约束关系是针对双方 添加了约束后,主表修改和删除数据受约束 添加了约束后,添加和修改数据受约束 在从上建立,要求主表必须存在 删除主表时,要求先删除,将从中外引用该主表关系先删除...答:MySQL支持多种存储引擎,每一个都可以指定一个不同存储引擎,需要注意是:约束是用来保证数据参照完整性如果之间需要关联,却指定了不同存储引擎,那么这些之间是不能创建约束

    2.4K20

    初识MySQL

    允许为空,但只能有一个空值 主键约束 PRIMARY KEY(PK) 设置该字段为主键 可唯一标识该表记录 约束 FOREIGN KEY(FK) 用于在两之间建立关系,  需要指定引用主表哪一字段...删除字段 ALTER TABLE 名 DROP 字段名; 25.添加主键 语法一:(后期想要设置字段为主键添加方法,原来不存在) ALTER TABLE 名 ADD CONSTRAINT 主键名...KEY `grade`(`gradeId`); 语法二:(建时就直接添加方法) `id` int(4) primary key auto_increment comment '年级编号', 26.添加...语法: ALTER TABLE 表表名 ADD CONSTRAINT 键名 FOREIGN KEY(字段) REFERENCES 主表表名(关联字段); 示例:将studentgradeID...字段和gradegradeID字段建立关联 ALTER TABLE `student` ADD CONSTRAINT fk_student_grade FOREIGN KEY(`gradeId`

    79010

    mysql面试题目及答案_docker 面试题

    ),mysql只有在主键和数据类型相同时才能使用索引,否则及时建立了索引也不会使用; 25.说一说什么是,优缺点 键指的是约束,目的是保持数据一致性,完整性,控制存储在外数据。...缺点:可以用触发器应用程序保证数据完整性;过分强调或者说使用会平添开发难度,导致过多,更改业务困难,扩展困难等问题;不用时数据管理简单,操作方便,性能高(导入导出等操作,在insert,...update, delete 数据时候更快); 26.在什么时候你会选择使用,为什么 在我业务逻辑非常简单,业务一旦确定不会轻易更改,结构简单,业务量小时候我会选择使用。...,并转为一个常量时,使用这些访问类型;如果将主键置于where列表中,MySQL就能将该查询转化为一个常量;possible_keys:显示可能应用在这张索引;如果为空,没有可能索引;可以为相关...如果可能的话,是一个常数;rows:MySQL认为必须检查用来返回请求数据行数;Extra:关于MySQL如何解析查询额外信息; 发布者:全栈程序员栈长,转载注明出处:https://javaforall.cn

    1K20

    MySQL数据库】多表关系与多表联合查询

    ​​目录MySQL多表关系一对一一对多多对多MySQL约束创建数据插入删除多表联合查询交叉连接查询内连接查询连接查询子查询关键字自关联MySQL多表关系MySQL之间三种关系一对多关系...在多一方建立键指向一一方​编辑多对多 下表为多对多关系,由下表可知多对多关系中间至少需要2个​编辑 MySQL约束创建 格式: constraint foreign...);方式二 修改添加altertable add constraint foreign key() references (); -- 创建部门...-- 注意给添加数据时,值不能随便写,必须依赖主表主键列删除主表数据被依赖时,不能删除,否则可以删除数据可以随便删除多表联合查询​编辑 交叉连接查询 •交叉连接查询返回被连接两个所有数据行笛卡尔积...ALL表示指定列中值必须要大于子查询集每一个值,即必须要大于子查询集最大值;如果是小于号即小于子查询集最小值。同理可以推出其它比较运算符情况。

    3K30

    Web-第六天 MySQL回顾学习

    我们通过主表主键和来描述主外关系,呈现就是一对多关系。 特点: 值是对主表主键引用。 类型,必须与主表主键类型一致。...声明约束 语法:alter table add [constraint] [键名称] foreign key (字段名) references 主表 (主表主键); [键名称]...4.2.3 一对一关系:(了解) 在实际开发中应用不多.因为一对一可以创建成一张. 两种建原则: 唯一:主表主键和(唯一),形成主外关系,唯一unique。...是主键:主表主键和主键,形成主外关系。...连接可依据连接保留左, 右全部行而进一步分为左连接, 右连接和全连接. 注意:mysql只支持左连接与右连接,而不支持全连接。

    82520

    MySQL数据库】多表关系与多表联合查询

    目录 MySQL多表关系 一对一 一对多 多对多 MySQL约束 创建 数据插入 删除 多表联合查询 交叉连接查询 内连接查询 连接查询 子查询关键字 自关联 MySQL多表关系 MySQL...一对多 一个部门可以有多名员工,但一个员工只能归于一个部门 在多一方建立键指向一一方 多对多 下表为多对多关系,由下表可知多对多关系中间至少需要2个...MySQL约束 创建  格式: constraint foreign key 字段名[,字段名2,…] references 主键列1 [,主键列2,…] 方式一 创建时添加...,值不能随便写,必须依赖主表主键列 删除 主表数据被依赖时,不能删除,否则可以删除 数据可以随便删除 多表联合查询 交叉连接查询 • 交叉连接查询返回被连接两个所有数据行笛卡尔积...ALL表示指定列中值必须要大于子查询集每一个值,即必须要大于子查询集最大值;如果是小于号即小于子查询集最小值。同理可以推出其它比较运算符情况。

    2.7K20
    领券