四种约束

 

约束的简介

数据的完整性是指数据的正确性和一致性,可以通过定义表时定义完整性约束,也可以通过规则,索引,触发器等。约束分为两类:行级和表级,处理机制是一样的。行级约束放在列后,表级约束放在表后,多个列共用的约束放在表后。 完整性约束是一种规则,不占用任何数据库空间。完整性约束存在数据字典中,在执行SQL或PL/SQL期间使用。用户可以指明约束是启用的还是禁用的,当约束启用时,他增强了数据的完整性,否则,则反之,但约束始终存在于数据字典中。

约束类型

总的来说有五种:唯一性和主键约束、外键约束、检查约束、空值约束、默认值约束,

有五大关键词,UNIQUE和Primary Key, Foreign Key, CHECK, NOT NULL, DEFAULT

1。唯一性和主键约束。

要求某一列,或几列不能有重复的值,建立主键约束和唯一约束时,Oralce会基于约束列自动建立唯一索引;主键约束不允许为NULL,唯一约束允许为NULL,一张表只能建立一个主键约束。唯一性和主键约束类似,只是关键词不同而已,语法一致。

删除、禁用、启用约束、修改约束名

ALTER TABLE table_name

DROP CONSTRAINT constraint_name(删除约束)

DISABLE CONSTRAINT constraint_name;(启用约束)

ENABLE CONSTRAINT constraint_name;(禁用约束)ALTER TABLE table_name

RENAME CONSTRAINT old_constraint_name TO new_constraint_name(修改约束名)

select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R';【禁用所有外键约束】

select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R';【启用所有外键约束】

select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R';【删除所有外键约束 】

 

 

 

数据库的四种类型的完整性约束

 

数据完整性:是指存储在数据库中的所有数据值均正确的状态。


四种类型的完整性约束:


1、实体完整性约束:

表中的每一行数据都反映不同的实体,不能存在相同的数据行.

通过索引.唯一约束,主键约束或标识列属性,可以用来实现表的实体完整性.


索引:将文献中具有检索意义的事项(可以是人名、地名、词语、概念、或其他事项)按照一定方式有序编排起来,以供检索的工具书。
 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。  例如这样一个查询:select * from table1 where id=44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),直接在索引里面找44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行。可见,索引是用来定位的。

唯一约束:

比如一张表的学生姓名设置了唯一约束,那么学生的姓名就是不能重复的,只能是唯一的
 唯一约束保证在一个字段或者一组字段里地数据与表中其它行的数据相比是 唯一的附上与主键约束的区别,以更好理解创建唯一约束可确保在未参与主键的特定列中不输入重复值。尽管唯一约束和主键都强制唯一性,但如果情况如下,则应向表附加唯一约束而不是主键约束: 希望在某一列或某一组列中强制唯一性。您可以向表附加多个唯一约束,但只能向表附加一个主键约束。希望在允许空值的列中强制唯一性。您可以向允许空值的列附加唯一约束,但只能向不允许空值的列附加主键约束。当向允许空值的列附加唯一约束时,请确保在所约束的列中最多只有一行包含空值。

2、域完整性约束:

指给定列的输入有效性
通过
限制数据类型,
检查约束,
输入格式,
外键约束,
默认值,
非空约束
等多种方法,可以用来实现表的域完整性.
3、参照完整性约束:

在输入或删除数据行时,引用完性约束用来保持表之间已定义的关系
4:、用户定义的完整性约束:

用来定义特定的规则,例如,向用户信息表中插入一个用户记录时,要求通过身份证编号来检查另外一个数据库中是否存在该用户,并且该用户的信誉度是否满足要求等.如果不满足要求则不能够插入,这个时候就需要使用数据库的规则存储过程或者触发器来进行约束

posted on 2017-06-16 16:26  homie  阅读(1160)  评论(0编辑  收藏  举报