首页 > 代码库 > SQL约束

SQL约束

一、几类数据完整性

    实体完整性:表中记录不重复(任何两条记录不全等)并且每条记录都有一个非空主键

    域完整性:表中字段值必须与字段数据类型、格式、有效范围相吻合

    参照完整性:不能引用不存在的值

    自定义完整性:根据特定业务领域定义的需求完整性

   

    保证数据完整性的几种常用方法

       约束(最常用)

       过程

       函数

       触发器

      

       实体完整性:primary key、unique、索引(index)

       域完整性:check、foreign key、not null、数据类型

       参照完整性:foreign key

       自定义完整性:根据业务选用相应的约束类型

 

二、约束

    约束是表、列级的强制规定、是防止那些无效或有问题的数据输入到表中。当对该表进行DML

    操作时,如果操作违反约束条件或规则,ORACLE就会拒绝执行,并给出提示。

 

    约束放置在表中,以下五种约束:

       NOT NULL          非空约束C     指定的列不允许为空值

       UNIQUE             唯一约束U     指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的

       PRIMARY KEY       主键约束P     唯一的标识出表的每一行,且不允许空值值,一个表只能有一个主键约束

       FOREIGN KEY       外键约束R     一个表中的列引用了其它表中的列,使得存在依赖关系,可以指向引用自身的列

       CHECK              条件约束C     指定该列是否满足某个条件

 

    约束命名规则

       如果不指定约束名Oracle server 自动按照SYS_Cn 的格式指定约束名,也可手动指定,

       推荐的约束命名是:约束类型_表名_列名。

      

       NN:NOT NULL          非空约束,比如nn_emp_sal

       UK:UNIQUE KEY         唯一约束

       PK:PRIMARY KEY       主键约束

       FK:FOREIGN KEY       外键约束

       CK:CHECK             条件约束

      

    何时创建约束:

       建表的同时

       建表之后

 

    可以在表级或列级定义约束

       列级约束:只能引用一个列并且它属于列定义的一部分,可定义成任意类型的完整性约束。

       表级约束:可引用一个或多个列,并且它属于表定义的一部分,可定义除NOT NULL外的其它约束。

 

    可以通过数据字典视图查看约束

       user_constraints

       dba_constraints

       all_constraints

       user_cons_columns   列级上的约束

       dba_cons_columns    列级上的约束

 

 

    建表时约束定义的基本格式:

       字段定义constraint 约束名约否类型(字段名)-->unique,primary key,check

       字段定义constraint 约否名foreingn key (字段名)references 表名(字段名)--->foreign

SQL约束