赞
踩
创建一个约束:在创建表的同时,或者在创建表之后都可以定义约束。可以给约束起名字,但是约束名不能相同,必须是唯一的。如果没有为约束起名字,Oracle 服务器将用默认格式SYS_Cn产生一个名字,这里n是一个唯一的整数,所以约束名是唯一的。
示例:
创建一个dept80表。
create table dept80(id number,name varchar2(20) not null,salary number constraint dept80_not not null);
说明:name的非空约束由系统自动起名,salary的非空约束被用户起名为dept80_not,注意使用了constraint关键字。
desc dept80;
Name Type Nullable Default Comments
------ ------------ -------- ------- --------
ID NUMBER Y
NAME VARCHAR2(20)
SALARY NUMBER
示例:
给dept表中的location_id列添加非空约束。
alter table dept80 modify location_id not null;
说明:想给定约束名称的话使用constraint关键字。
示例;
create table dept90 (id number constraint dept90_uk unique,name varchar2(20));
示例:
alter table dept90 modify(name unique);
create table dept70(id number constraint dept70_pk primary key);
示例:
alter table dept60 modify(id constraint dept60_pk primary key);
create table dept50(id number,name varchar2(20), constraint dept50_pk primary key(id,name));
注意:添加外键约束时被引用的表必须先存在。而且外键约束不能直接跟在列的后面创建。
示例:
create table dept40 (id number,d_id number,constraint dept40_fk foreign key(d_id) references dept60(id));
说明:创建了一个dept40表,表中的字段d_id参照于dept60表中id列。
示例:
alter table dept50 add constraint dept50_fk foreign key(d_id) references dept60(id);
说明:以上所有的修改是这个表和这个字段已经存在,仅是修改。
示例:
create table dept30 (id number,salary number(8,2) constraint dept30_ck check(salary>1000));
alter table dept50 add constraint dept50_ck check(salary>1000);
表的约束被存放在user_constraints表中。
select constraint_name,constraint_type,search_condition from user_constraints where table_name = 'DEPT50';
CONSTRAINT_NAME CONSTRAINT_TYPE SEARCH_CONDITION
------------------------------ --------------- --------------------------
DEPT50_PK P
DEPT50_FK R
DEPT50_CK C salary>1000
说明:表明在Oracle数据库中都是大写,所以条件那里表明为大写。search_condition为检查约束的具体条件。
P:主键约束。R:外键约束。C:检查约束。
说明:如果要禁用的主键被其他表的外键所参照,就不能禁用,存在相关性。加上CASCADE(级联禁用)后会把和他关联的外键也禁用掉,这样就可以成功禁用。
alter table dept60 disable constraint dept60_pk;
alter table dept60 disable constraint dept60_pk cascade;
示例:
alter table dept60 enable constraint dept60_pk;
说明:disable禁用约束。cascade:级联禁用约束。enable:启用约束。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。