MySQL中的主键约束和外键约束
1、主键约束
表通常具有包含唯一标识表中每一行的值的一列或一组列。 这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。 由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束。
如果为表指定了主键约束, 数据库引擎将通过为主键列自动创建唯一索引来强制数据的唯一性。 当在查询中使用主键时,此索引还允许对数据进行快速访问。
如果对多列定义了主键约束,则一列中的值可能会重复,但来自主键约束定义中所有列的值的任何组合必须唯一。
2、外键约束
也称为引用约束或引用完整性约束,能够定义表间以及表内必需的关系。
例如,典型的外键约束可能规定 EMPLOYEE 表中的每个职员必须 是一个现有部门的成员,该部门在 DEPARTMENT 表中定义。
引用完整性是数据库的一种状态,在该状态中,所有外键的所有值都有效。外键是表中的一列或一组列,它的值需要与其父表的行的至少一个主键或唯一键值相匹配。
引用约束是这样一种规则,仅当满足下列其中一个条件时,外键的值才有效:
- 它们作为父键的值出现
- 外键的某些组成部分为空
例如,要建立此关系,应将 EMPLOYEE 表中的部门号定义成外键,并将 DEPARTMENT 表中的部门号定义成主键。
这样当在EMPLOYEE表中新添加一个员工,而其所在部门的代号在DEPARTMENT表中未出现时,这将是一个无效键记录,将被阻止。
引用约束的目的是保证表关系得到维护并遵循数据输入规则。
这意味着只要引用约束有效,数据库管理器就保证对于子表中其外键列中具有非空值的每行,相应父表中都存在一个其父键中具有匹配值的行。
3、当操作违反引用约束时,数据库管理器通过强制执行与每个引用约束关联的一组规则来处理这类情况。
当 SQL 操作尝试更改数据的方式导致引用完整性受到影响时,可能是违反了引用约束。例如,
- 插入操作可能尝试将一个数据行插入到子表中,该行的外键列中的值与相应父表的父键中的值不匹配。
- 更新操作可能尝试将子表的外键列中的值更改为一个在相应父表的父键中没有匹配值的值。
- 更新操作可能尝试将父表的父键中的值更改为一个在子表的外键列中没有匹配值的值。
- 删除操作可能尝试从父表中除去在子表的外键列中具有匹配值的记录。
此时,数据库管理器通过强制执行与每个引用约束关联的一组规则来处理这类情况。这组规则包括:
- 插入规则
- 更新规则
- 删除规则
4、引用约束的插入规则
外键的非空插入值必须与父表的父键的某些值相匹配。如果组合外键的值的任何组成部分为空,那么该值为空。指定外键时,此规则是隐式的。
5、引用约束的更新规则
引用约束的更新规则是在定义引用约束时指定的。选项有 NO ACTION 和 RESTRICT。在更新父表的某行或从属表的某行时应用更新规则。
6、引用约束的删除规则
删除规则是在定义引用约束时指定的。选项有 NO ACTION、RESTRICT、CASCADE 或 SET NULL。仅当外键的某些列允许空值时,才能指定 SET NULL。
转载于:https://www.cnblogs.com/bigbigbigo/p/8408454.html
MySQL中的主键约束和外键约束相关推荐
- mysql 导入数据 1215_在用Navicat for MySQL给MySQL中的数据表单添加外键以及主键出现的1215错误...
这次在学校进行生产实习,跟随老师创建一个PHP项目,实现一个电子商务系统B to B模式的,在设计数据库的时候,因为要实现父表和子表之间的关联,涉及到添加主键和外键,在添加的时候,无论如何都出现 ...
- mysql中的外键约束_MySQL外键约束
在本教程中,您将了解MySQL外键(foreign key)以及如何在MySQL中创建,添加和删除外键约束. MySQL外键简介 外键表示一个表中的一个字段被另一个表中的一个字段引用.外键对相关表中的 ...
- mysql主键约束和外键约束的作用_MySQL中的主键约束和外键约束
1.主键约束 表通常具有包含唯一标识表中每一行的值的一列或一组列. 这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性. 由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束. 如 ...
- MySQL(四)—— 数据表的约束(外键约束,主键约束等)
文章目录 数据表的约束 主键约束 非空约束 默认值约束DEFAULT 唯一性约束 UNIQUE 外键约束 FOREIGN KEY 创建外键 数据的一致性了解 删除外键 外键约束需要注意的细节 数据表的 ...
- MySQL中的主键、唯一键、外键对比
一.主键 主键:每张表中只能有一个字段(复合主键可以有多个字段)使用此属性,用来唯一约束该字段中的数据,不能重复 1.增加主键: 在创建表的时候,直接在字段后,添加primary key关键字 CRE ...
- SQL Server中的六种约束:主键约束,外键约束,唯一约束,非空约束,检查约束,默认约束
什么是约束? 数据库-由若干张数据表组成(理解为一个类库) 数据表-由行和列组成的一个二维数组(理解为一个类) 列-字段(理解为表中对象的一个属性) 行-理解为表中的一个对象 约束是数据库中保证数据完 ...
- Mysql主键约束与外键约束
主键约束:primary key 声明了主键约束的列上不允许插入重复的值,一个表中只能有一个主键约束,通常加在编号列,会加快数据的查找速度,并且编号会按照从大到小的顺序排列 注 : 主键约束的列禁止插 ...
- mysql建表时外检怎么创建_MySQL创建表时加入的约束以及外键约束的的意义
1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...
- Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写
Oracle数据库:约束条件:主键约束.唯一约束.检查约束.非空约束.外键约束.默认值填写 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开 ...
最新文章
- 解决Lync Server 2013无法共享演示PPT
- AJAX跨域资源共享 CORS 详解
- BAPI_GOODSMVT_CREATE的几个应用
- Linux 浏览网址汇集
- 总结:服务器硬件对性能的影响
- 优化案例(part8)--Robust Recovery of Subspace Structures by Low-Rank Representation
- sonar:默认的扫描规则
- 正则表达式的基本语法[转]
- Google工程师多图详解Android系统架构
- 【转载】opencl中设备内存
- java横向分割面板后怎么加标签_java面板,标签,布局问题代码执行
- 【vim编辑器的使用】
- Unity使用中文包
- JavaWeb图书管理系统+论文+答辩ppt
- python处理excel为饼状图_Python入门进阶:Python绘制饼图到Microsoft Excel
- python视频推荐知乎_用Python下载知乎视频,非常实用!
- oracle if else嵌套,else能嵌入if吗
- Shopee本地店和跨境店物流及收款方式介绍
- mac php 连接 mssql 2008,php5.3.x连接MSSQLserver2008
- outlook邮箱收到的附件(excel, word, ppt)不能正常打开的解决办法