您的位置:首页 > 数据库 > Oracle

添加/删除约束(Oracle)

2011-12-20 12:59 316 查看
增加一列或者多列

alter table 表名 add(column_name datatype[,..]);

修改一列或者多列(修改列的类型或者是长度)

alter table 表名 modify(column_name datatype[,..]);

删除一列

alter table 表名 drop column column_name;

删除多列

alter table 表名 drop(column_name[,..])

建表阶段添加约束(字段级|表级)

非空约束(not null)

1)确保其所在字段值不能为空

2)非空约束只能定义为字段级别

基本语法:column_name datatype not null

唯一约束(unique)

1)确保其所在字段值不能重复

2)允许空值

3)既可以定义为字段级别也可以定义到表级别

4)可以在一个字段上建立唯一约束

(此字段值不能重复,既可以是表级别也可以是字段级别),

也可以在几个字段上建立唯一约束(这几个字段的组合值不能重复,只能是表级别的)

5)Oracle会自动为建立唯一约束的字段创建索引

字段级别:column_name datatype unique

表级别:

constraint uni_name unique(column_name[,..])自定义约束名

或者

unique(column_name[,..]) 系统自动分配约束名

删除约束:alter table 表名 drop constraint 约束名;

主键约束(primary key)

1)确保所在字段值非空且唯一

2)一个表最多只允许一个主键,当然这个主键可以基于一个字段也可以基于多个字段

3)非联合主键既可以是字段级别的也可以是表级别的,联合主键只能是表级别的

4)oracle会自动为其建立索引

字段级别:column_name datatype primary key

表级别:

constraint p_k primary key(column_name[,..])自定义约束名

或者

primary key(column_name[,..])系统自动分配约束名

一般情况下我们选择通过序列让系统去帮我们确保不违反主键约束

create table 表名(column_name datatype primary key,column_name2 datatype[,..]);

create sequence 序列名;

insert into 表名 values(序列名.nextval,值[,..])

删除主键:

alter table 表名 drop constraint 约束名;

或者

alter table 表名 drop primary key;

外键约束(foreign Key)

1)确保所在字段的值与另一个表中的字段值有一定的关联关系

2)既可以定义为字段级别也可以定义为表级别

3)被外键关联上的另一个表的字段必须唯一(即此字段必须是

unique或者primary key)

字段级别:column_name datatype reference 父表名(字段名)

表级别:

constraint f_k foreign key(column_name) references 父表名(字段名) --自定义约束名

或者

foreign key(column_name) references 父表名(字段名) --系统自动分配约束名

删除父表(主表):

方式一:先删除子表或者只删除子表的外键约束

然后使用drop table 表名删父表

方式二:drop table 父表名 cascade constraints;

检查约束(check)

1)确保所在字段的值在check所给的范围里面

2)既可以定义为字段级别也可以定义为表级别

字段级别:column_name datatype check(值1,值2)

表级别:constraint c_k check(条件)--自定义约束名

或者check(条件)--系统自动分配约束名

建完表后添加约束

alter table 表名 add constraint 约束名 unique(column_name[,..])--自定义约束名

alter table 表名 add unique(column_name[,..]);--系统自动分配约束名

主键约束、外键约束、检查约束的添加形如唯一约束

非空约束的添加

alter table 表名 modify(column_name not null);

禁用约束:

alter table 表名 disable constraint 约束名;

启用约束

alter table 表名 enable constraint 约束名;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: