ORACLE下数据完整性约束
 
为了保证数据的完整性和结构的正确性,oracle也有很多约束条件。
 
1.数据完整性
 
为了保证数据的完整性,一般对数据列(字段)进行如下约束,主键约束(PRIMARY KEY)、唯一键约束(UNIQUE)、非空约束(NOT NULL)、默认值(DEFAULT)、检查约束(CHECK)、外键约束(FOREIGN KEY)。
 
1.1 实体完整性约束
 
要求每一个表中的主键字段都不能为空或者重复,一般实现的方法是添加唯一约束和主键约束。这里选择主键一般的原则是尽量选择单键、主键必须保证唯一性、非空性、一般选择没有意义,用户不关心的字段。
 
表创建后,添加约束的语句如下:
 
|   -- 使用constraint创建指定名称的约束  constraint pk_id primary key(id);   | 
1.2域完整性约束
 
要求列的值域的完整性,如数据类型、格式和范围、是否允许为空等。一般实现的方法是限制数据类型,添加外键约束、默认值约束、非空约束。
 
|   -- 限制sex的取值  -- 创建表时添加约束  CREATE TABLE test(     id int,     sex char(1) constraint test_sex check (sex in ('0','1'))  );  --创建表后添加约束  alter table test add constraint test_sex check(sex in ('0','1'));   | 
1.3引用完整性约束
 
当处理数据时,通过参照另一个相关联的表中的数据,来检查对表的数据的操作是否正确。一般实现方法是添加外键约束。
 
|   alter table test  add constraint FK_TEST_ID foregin key (TID) references 主表 (TID)   | 
2.表之间的关系
 oracle中表与表之间的关系有一对一、一对多、多对一。
 
3.数据表的设计范式
 
数据表的设计范式是没有数据库之分的,每个数据库都是一样的,最基本的三个范式是:确保每列保持原子性;确保表中的每条数据都和主键相关;确保每列都和主键列直接相关,而不是间接相关。
 
4.修改约束的SQL语法
 
|   -- 建表时添加约束  not null约束必须写在行上  DEFAULT 约束必须写在行上  constraint 约束名 primary key(列)  constraint 约束名 unique(列)  constraint 约束名 check(sex in('男','女'))  constraint 约束名 foreign key(列) reference 其他表(列)  -- 外部添加约束  ALTER TABLE 表 ADD CONSTRAINT 约束名 PRIMARY KEY (列)  ALTER TABLE 表 ALTER COLUMN 列 SET DEFAULT '默认值'  ALTER TABLE 表 ADD CONSTRAINT 约束名 CHECK (条件)  ALTER TABLE 表 ADD CONSTRAINT 约束名 FOREIGN KEY (列) REFERENCES 其他表(列)  ALTER TABLE 表 ADD CONSTRAINT 约束名 UNIQUE (列...)  -- 删除约束  ALTER TABLE Persons DROP CONSTRAINT 约束名  -- 停用约束  ALTER TABLE 表名ADD CONSTRAINT 约束名 UNQUE(status) DISABLE  ALTER TBALE 表名DISABLE CONSTRAINT 约束名  --启用约束  ALTER TABLE 表名ENABLE CONSTRAINT 约束名;  ALTER TABLE 表名ENABLE NOVALIDATE CONSTRAINT 约束名;  -- 查看约束  select * from user_constraints where ...;   |