kejiayuan0806

2018-10-23   阅读量: 760

数据分析师 Mysql

MySQL完整性约束

扫码加入数据分析学习群

数据完整性约束指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。

一、 数据完整性的分类

数据完整性分为以下四类:

1、实体完整性:规定表的每一行在表中是惟一的实体。

2、域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。

3、参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。

4、用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。

二、完整性约束的类型

完整性约束可分为三种类型:与表有关的约束、域(Domain)约束、断言(Assertion)

1、与表有关的约束:是表中定义的一种约束。可在列定义时定义该约束,此时称为列约束,也可以在表定义时定义约束,此时称为表约束。

包括列约束(表约束+NOT NULL)和表约束(PRIMARY KEY、foreign key、check、UNIQUE) 。

(1) not null(非空)约束: 只用于定义列约束。

语法:Colunm_name datatype | domain not null

(2) unique(惟一)约束:用于指明创建惟一约束的列上的取值必须惟一。

语法:Colunm_name datatype | domain unique

(3) primary key(主键)约束:用于定义基本表的主键,起惟一标识作用,其值不能为null,也不能重复,以此来保证实体的完整性。

语法:Colunm_name datatype | domain primary key

primary key 与 unique的区别:

在一个表中,只能定义一个primary key约束,但可定义多个unique约束。

对于指定为primary key的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于unique所约束的惟一键,则允许为null,只是null值最多有一个。

(4) foreign key(外键)约束:定义了一个表中数据与另一个表中的数据的联系。

foreign key约束指定某一个列或一组列作为外部键,其中包含外部键的表称为子表,包含外部键所引用的主键的表称为父表。系统保证,表在外部键上的取值要么是父表中某一主键,要么取空值,以此保证两个表之间的连接,确保了实体的参照完整性。可以为表的一列或多列创建foreign key 约束,如果为多列创建 foreign key约束,将分别与主表中的相应主键相对应。

语法:Colunm_name datetype | domain references table_name(column)

(5) check(校验)约束:用来检查字段值所允许的范围。DBMS每当执行delete,insert或update语句时,都对这个约束过滤。如果为true,则执行。否则,取消执行并提示错误。

列定义语法:Column datetype | domain check(search condition)

表约束语法:Constraint constraint_name check(search condition)

2、域(Domain)约束:在域定义中被定义的一种约束,它与在特定域中定义的任何列都有关系。

语法:create domain domain_name as data type

3、断言(Assertion):在断言定义时定义的一种约束,它可以与一个或多个表进行关联。不必与特定的列绑定,可以理解为能应用于多个表的check约束,因此必须在表定义之外独立创建断言。

语法:create assertion constraint_name

check search condition

添加断言后,每当试图添加或修改Emp_Sal表中的数据时,就对断言中的搜索条件求值,如果为false,则取消执行,给出提示。

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 2 关注作者 收藏

评论(0)


暂无数据

推荐课程