1,CONSTRAINT types 约束类型
(1)NOT NULL ==>实现列完整性
(2)UNIQUE ==>唯一约束条件,实现行的实体完整性
(3)PRIMARY KEY ==>唯一约束条件,实现行的实体完整性
(4)FOREIGN KEY ==>实现参照完整性
(5)CHECK ==>实现列完整性
2,实体完整性:行的唯一约束条件
SQL> desc test2;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
NAME VARCHAR2(20)
FNAME VARCHAR2(20)
SQL> alter table test2
2 add constraint uk_test2_1 unique(name,fname);
表已更改。
SQL> insert into test2 values (3,'kong','sales');
已创建 1 行。
SQL> insert into test2 values(4,'kong','sales');
insert into test2 values(4,'kong','sales')
*
第 1 行出现错误:
ORA-00001: 违反唯一约束条件 (WKADMIN.UK_TEST2_1)
3,主键与外键:参照完整性;
SQL> run
1 create table test3
2 (id int,
3 lname varchar(20),
4 fname varchar(20),
5* constraint pk_test3 primary key(id))
表已创建。
SQL> run
1 create table test4
2 (rid int,
3 name varchar(20),
4* constraint fk_test4 foreign key(rid) references test3(id))
表已创建。
4,check使用:实现列完整性;
如:约束字段name值必须以k开头;
SQL> alter table test4
2 add constraint ck_test4_1 check(name like 'k%');
表已更改。
SQL> insert into test4
2 values(1,'hong');
insert into test4
*
第 1 行出现错误:
ORA-02290: 违反检查约束条件 (WKADMIN.CK_TEST4_1)
5,删除主键;
SQL> alter table test3
2 drop constraint pk_test3 cascade;
表已更改。
6,删除check约束条件;
SQL> alter table test4
2 drop constraint ck_test4_1;
表已更改。
6,禁用主键约束条件:DISABLE CONSTRAINT pk_test3 CASCADE;
或解除禁用的主键约束条件:ENABLE CONSTRAINT pk_test3;
SQL> alter table test3
2 disable constraint pk_test3;
表已更改。
SQL> run
1 alter table test3
2* enable constraint pk_test3
表已更改。
7,查询约束条件;
SQL> select constraint_name,constraint_type,
2 search_condition
3 from user_constraints
4 where table_name='test3';
或
SQL> select constraint_name,constraint_type,
2 search_condition
3 from user_constraints
阅读(958) | 评论(0) | 转发(0) |