完整性约束条件

路的好坏不在于崎岖多少, 只在于谁能最终达到目标。——申宝峰

完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。

PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录
FOREIGN KEY (FK) 标识该字段为该表的外键,是与之相联系的某表主键
NOT NULL 标识该字段不能为空
UNIQUE KEY (UK) 标识该字段的值是唯一的
AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT 为该字段设置默认值

MySQL数据库系统不支持check约束,根据约束数据列限制,约束可分为单列约束和多列约束。主键可分为单字段和多字段主键。

外键约束FOREIGN KEY (FK):

外键约束为了保证多个表之间的参照完整性,即构建两个表的字段之间的参照关系。
例如,表示一个班级和学生的关系,即每个班级有多个学生。首先应该有两个表:班级表和学生表,然后学生表有个表示班级编号的字段classnum,其依赖于班级表的主键,这样的字段classnum就是学生表的外键,通过该字段班级表和 学生表建立了关系。
对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为空Null。
主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。

定义外键时,需要遵守下列规则:

  1. 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
    必须为主表定义主键。

  2. 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

  3. 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。

  4. 外键中列的数目必须和主表的主键中列的数目相同。

  5. 外键中列的数据类型必须和主表主键中对应列的数据类型相同。

一、CASCADE:级联

(1)所谓的级联删除,就是删除主键表的同时,外键表同时删除。
(2)以上面的例子将就是,假如院系表中的某个院系被删除了,那么在学生表中要想查询这个被删除的院系号所对应的院信息就会报错,因为已经不存在这个系了,所以,删除院系表(主键表)时必须删除其他与之关联的表,这里就说明了外键的作用,保持数据的一致性、完整性。当然反过来讲,你删除学生表中的记录,并不影响院系表中的数据,你查询院系号也能正确查询。所以删除外键表中的数据并不影响主键表。

二、NO ACTION(非活动,默认)、RESTRICT:约束/限制

当取值为No Action或者Restrict时,则当在主键表中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。(即外键表约束主键表)

三、SET NULL

当取值为Set Null时,则当在主键表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(,一样是外键表约束主键表,不过这就要求该外键允许取null)。

NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。

MySQL - 完整性约束条件相关推荐

  1. 数据库——完整性约束条件

    文章目录 1.完整性约束条件测试 1.1完整性约束条件有哪些 1.1.1主键 1.1.2自增长 1.1.3测试非空NOT NULL 1.1.4测试默认值DEFAULT 1.1.5测试唯一UNIQUE ...

  2. mysql 序列自增长 恢复到1_大数据教程分享MySQL数据库约束条件和自增长序列

    大数据教程分享MySQL数据库约束条件和自增长序列,一.约束(constraint) 约束就是在表上强制执行的一种校验规则,当执行DML操作时,数据必须符合这些规则,如果不符合,将无法执行. 约束的全 ...

  3. 数据库系统概论中国人民大学MOOC第一章数据库系统知识点总结(2) 层次结构- 网状结构-关系结构数据的完整性约束条件单向链接 双向链接 环状链接 向首链接

    关注公众号凡花花的小窝,收获更多的考研计算机专业编程相关的资料 1.2.3数据模型的组成要素 数据模型是严格定义的一组概念的集合 精确地描述了系统地静态特性,动态特性和完整性约束条件(Integeri ...

  4. 关系、关系模式、关系数据库的区别和概念以及关系的完整性约束条件

    以下内容是本人利用网络资料以及课堂学习总结的学习笔记,如有错误欢迎评论区更正. 前言 这是一组关系实例 域(Domain):一组具有相同数据类型的值的集合(如:整数.实数.具有某一范围的一个整数... ...

  5. mysql 完整性概念_mysql基础知识

    mysql 表 查询语句 DQL :查询语句 排序查询语法:order by 子句 排序方式:ASC : 升序,默认的 DESC : 降序. 注意 :如果有多个排序条件,则当前边得条件值一样时,才会判 ...

  6. mysql 数据约束条件_mysql基本数据类型和约束条件

    创建表的完整语法 #语法: create table 表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件] );#注意: 1. ...

  7. MySQL字段约束条件,外键约束条件,表关系

    目录 字符编码与配置文件 统一字符编码 存储引擎 修改存储引擎的方式 自定义选项存储引擎 不同存储引擎产生的表文件有几个? MERGE InnoDB Archive BLACKHOLE blackho ...

  8. 怎么验证mysql完整性_MySQL数据库认证高级(一)——数据完整性

    一.数据完整性简介 1.数据完整性简介 数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确反应实际情况.数据的完整性是指数据的可靠性和准确性,数据完整性类型有四种:A.实体完 ...

  9. mysql 完整性概念_数据库完整性是什么概念?

    一.完整性的概念 之所以要引入数据完整性是为了在数据的添加.删除.修改等操作中不出现数据的破坏或多个表数据不一致.数据完整性是指存储在数据库中的数据正确无误并且相关数据具有一致性. 二.完整性的类型 ...

最新文章

  1. 沈阳生态所在保护性耕作促进农业可持续发展方面取得新进展
  2. python @property
  3. PDFMaker无法找到Adobe PDF Printer的打印机驱动
  4. 拉格朗日插值法的MATLAB源程序
  5. Palo Doris版五分钟快速入门
  6. 产品经理十八章:产品创新能力(二)
  7. SAP CRM one order模型BOR类型支持的对象列表
  8. yum 来安装 nodejs
  9. 解决 springboot 启动报错 -- Cannot determine embedded database driver class for database type NONE
  10. 剑指offer题目汇总
  11. 17福师《计算机应用基础,福师17春秋学期《计算机应用基础》在线在线作业一.doc...
  12. redhat7.2创建本地yum源
  13. 运维 xshell 快捷键
  14. java捕鱼达人代码java捕鱼游戏代码
  15. 基于matlab的黑体辐射特性分析,MATLAB 黑体辐射规律的研究
  16. netware php_服务器_如何在 Netware 服务器中安装多块网卡,如果网络在扩大时服务器只装 - phpStudy...
  17. java生日提醒_生日提醒功能
  18. thinkphp使用migration/Seeder
  19. 数据库截取某一字段的值
  20. SSH隧道技术及端口映射与转发

热门文章

  1. WLANPro.exe导致紫光输入法失效?Baidu流氓软件也有份
  2. Go语言的数据科学和机器学习:实现高效、准确和可靠的数据处理和预测
  3. 19_ElasticSearch 使用match和近似匹配实现召回率与精准度的平衡
  4. 迎合5G浪潮刷脸支付技术落地
  5. MFC框架下自绘CEdit控件
  6. phpstorm 激活码
  7. 生活的苦 VS 学习的苦
  8. 基于Android重力传感器的编程——摇一摇打电话+旋转锁屏功能的实现
  9. java高斯分布随机数_生成符合高斯分布或者其他任意分布的随机数
  10. java开发八荣八耻