ITPub博客

首页 > 数据库 > Oracle > oracle 约束

oracle 约束

Oracle 作者:jiangzy204 时间:2013-12-07 21:49:33 0 删除 编辑

约束是表中列的属性,用来维护数据构造残缺性的一种足段
约束的种类:
NOT NULL
UNIQUE
PARIAMRY KEY
FOREIGN KEY
CHECK

 

enble validate  搜检现稀有据战新数据可否适宜约束
enable novlidate   搜检新数据可否适宜约束
disable validate   给表加锁
disable novalidate 


创立表的时辰带有约束信息:
create table e (empno number(4) constraint pk_e_empno(约束名) primary key,
ename varchar2(10) not null, not null只能在列级别
email varchar2(30),
constraint uk_e_email unique (email)); 约束写在后面为表级别约束,要指定列名

 

查察约束信息:
select constraint_name,
constraint_type,
SEARCH_CONDITION,
R_CONSTRAINT_NAME
from user_constraints
where table_name="E";

 

select constraint_name,column_name from user_cons_columns
where table_name="E";

 

添加约束:
alter table e add (sal number(7,2),deptno number(2));

 

alter table e add constraint ck_e_sal check (sal>999 and sal is not null);

 

alter table e add constraint fk_e_deptno foreign key(deptno) references dept (deptno);

 

注意:not null 约束只能在列级别指定不克不及在表级别指定!
alter table e modify (ename varchar2(10) constraint nn_e_ename not null);

 

select table_name,constraint_type from user_constraints where constraint_name="PK_DEPT";

 

select table_name,column_name from user_cons_columns
where constraint_name="PK_DEPT";

 

insert into e values (1,"X1","x1@uplooking.com",1000,10);
insert into e values (2,"X2","x2@uplooking.com",2000,20);
insert into e values (3,"X3","x3@uplooking.com",2000,40);
commit;

 

测试数据依好关系:
delete dept where deptno=40;

 

删除约束:
alter table e drop constraint fk_e_deptno;

 

中键约束的两种不凡情形(主键删除有级联)
alter table e add constraint fk_e_deptno foreign key(deptno) references dept (deptno) on delete set null;

 

alter table e add constraint fk_e_deptno foreign key(deptno) references dept (deptno) on delete cascade;

 

约束的外形:
select constraint_name,
status
from user_constraints
where table_name="E";

 

胁制约束:
alter table e modify constraint UK_E_EMAIL disable;

 

启用约束:
alter table e modify constraint UK_E_EMAIL enable;

 

删除中键,从头成立女子关系(子表为e,女表为d,d表拷贝dept表数据):
alter table e drop constraint fk_e_deptno;

 

create table d as select * from dept;

 

alter table d add constraint pk_d_deptno primary key (deptno);

 

alter table e add constraint fk_e_deptno foreign key(deptno) references d (deptno);

 

女子关系成立后对女表构造修改的影响:
alter table d drop (deptno);
ORA-12992: cannot drop parent key column

 

强制删除女表主键:
alter table d drop (deptno) cascade constraints;


<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23603336/viewspace-1116571/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-03-27

最新文章