数据的完整性就正确性、准确型,包括三种:实体完整性、参照完整性和用户自定义完整性。 实体完整性就是某一列的数据应该在正确的取值范围内,例如学生表中的学号就不能为负数。 参照完整性就是外键的取值范围应该在关联表对应的列的取值范围内,例如学生表中的班级编号就应该在班级表的班级编号范围内。 用户自定义完整性就是某些列的取值应该在依据其他表或列的取值范围进行计算后的范围内,例如学生表中的出生日期应该比入学日期小。
Oracle中主要通过约束、触发器、过程函数实现数据的完整性。 维护数据的完整性主要有“not null”、“unique”、“check”、“primary key”、“foreign key”五种。 not null:非空,只能在列内定义。 unique:唯一,不能重复,但可以为空,但只能有一个空值。一个表可以有多个列为“unique”。即可以在列中定义,也能在表中定义 primary key:主键,不能重复也不能为空。一个表只能有一列是“primary key”。即可以在列中定义,也能在表中定义 foreign key:外键。 check:可以按照用户要求自动检查。
SQL> create table t3(bianhao number(5) not null check (bianhao > 0 and bianhao < 100));
表已创建。
select * from user_constraints where table_name = 'T3';
select * from user_cons_columns where table_name = 'T3';
create table t4(class_id number(3) not null,student_id number(3) not null,student_name varchar2(10),unique(class_id,student_id));
create table t5(id number(5),name varchar2(5),gongzi number(8,2) default 1000);
insert into t5 values(1,'Tom',default);
insert into t5(id,name) values(2,'Jim');
create table student2(id number(5) primary key,name varchar2(5));
create table address2(id number(5),address varchar2(20),foreign key(id) references student2(id));
create table user1(userid number(10) primary key,username varchar2(20));
create table user2(userid number(10) constraint pk_01 primary key,username varchar2(20));
create table user3(userid number(10),username varchar2(20),primary key(userid));
create table user4(userid number(10),username varchar2(20),constraints pk_02 primary key(userid));
create table user5(userid number(10),username varchar2(20));
alter table user5 add constraints pk_03 primary key(userid);
alter table user2 drop constraint pk_01;
alter table user1 drop primary key;
alter table user1 drop primary key cascade;
drop table user1 cascade constraints;
alter table user3 disable primary key;
alter table user3 enable primary key;
|