Oracle约束

开发工具与关键技术:Oracle sql*plus  PLSQL Developer

作者:黄钟瑶

撰写时间:2019年56

 

Oracle约束,一般是在重要主键约束用的,但是使用约束得考虑实际的情况,因为是要影响到性能的问题,使用不当会影响到数据的使用。

Oracle约束有五种,分别是:

主键约束(PRIMARY KEY)

一个表中只有一个主键,而且主键是唯一的,不可重复,其实也相当于唯一性约束(UNIQUE)和非空约束(NOT NULL),但是效果却不太相同

唯一性约束(UNIQUE)

保证数据的唯一性,可以出现空值

非空约束(NOT NULL)

列中的值不能为空

外键约束(FOREIGN KEY)

在父表中子表的列

检查约束(CHECK)

检查数据是否满足指定的条件

它可以在创建表的同时加上,或者是在创建表之后再添加,能在表级或者列级单独定义,注意:表级约束可以定义在一个列或者是多个列上,列级约束就只能定义在一个列上。

通过数据字典查询约束

select * from user_constraints

定义约束,创建表的同时定义:

create table newtable3

(id number(10) PRIMARY KEY ,name varchar2(10),birthday date NOT NULL)

查看定义的列,注意:查看的表名区分大小写

在创建好的表之后,也可以对表进行添加或删除约束,注意:约束是不能进行修改的,但是可以是约束有效化或者是无效化

添加主键约束

Alter table newtable3

add PRIMARY KEY(id);

与同时创建的约束是没有多大差别的,只是约束名不一样了,注意:如果不指定约束名,将会以Oracle的命名格式SYS_Cn存在

添加唯一性约束:

Alter table newtable3

add  unique(name);

注意:添加非空约束(NOT NULL)时要使用MODIFY语句,只能是非空约束(NOT NULL),其他的约束不能使用modify,因为语法特殊的问题

Alter table newtable3

modify  (birthday date not null);

删除约束:直接用drop删除不需要的约束即可

Alter table newtable3

drop unique(name);

Column_name的name的constraint_name已经被删除

Check约束:检查数据是否满足指定的条件

Alter table newtable3

add  check(name>0 and name<10);

如果超出了指定条件范围,则会出错

使约束无效化与有效化:Disable、Enable

约束无效化

语法:alter table 数据库表名 disable constraint 约束名

Alter table newtable3

disable constraint  SYS_C0011781 ;

语句执行完后,该约束无效

激活约束

语法:alter table 数据库表enable constraint 约束名

Alter table newtable3

enable constraint  SYS_C0011781 ;

当定义或激活UNIQUE 或 PRIMARY KEY 约束时系统会自动创建UNIQUE 或 PRIMARY KEY索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值