开发工具与关键技术:Oracle sql*plus PLSQL Developer
作者:黄钟瑶
撰写时间:2019年5月6日
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索引