1. 检查约束是什么
检查约束的作用就是让表中的数据更有意义。检查约束就是为了检测和过滤不符合实际意义的数据,比如说年龄1000,工资-500等这些数据。
2.在创建表时设置检查约束
1)列级检查约束
语法:
create table table_name ( column_name datatype check(expressions)) ;
check 是检查关键字
expressions 是约束的条件
实例:
将salary 设置检查约束,使其>0 。
create table userinfo_c( id varchar2(10) primary key , username varchar2(20) , salary number(5,0) check(salary>0)) ;
执行
先执行实例,插入语句当 salary<0 的时候报错。
sql> create table userinfo_c( 2 id varchar2(10) primary key , 3 username varchar2(20) , 4 salary number(5,0) check(salary>0)) ; 表已创建。 sql> insert into userinfo_c values(1,'shao'-500) ; insert into userinfo_c values(1,'shao'-500) * 第 1 行出现错误: ora-00947: 没有足够的值 sql>
2)表级级检查约束
语法
constraint constraint_name check(expressions)
实例
create table userinfo_c1( id varchar2(10) primary key , username varchar2(20), salary number(5,0), constraint ck_salary check(salary>0) );
3.修改表设置检查约束
语法
add constraint constraint_name check(expressions)
实例
首先创建一个表
create table userinfo_c2( id varchar2(10) primary key, username varchar2(20), salary number(5,0) ) ;
添加检查约束。
alter table userinfo_c2 add constraint ck_salary_new check(salary>0) ;
4.删除检查约束
1)禁用(启用)检查约束
语法
alter table table_name disable|enable constraint constraint_name
实例
alter table userinfo_c1 disable constraint ck_salary ;
运行
1. 要查看userinfo_1 的禁用状态, 首先 desc user_constraints 看看数据字典的字段, 我们要看constraint_name , constraint_type status 类型。
2. 执行 select constraint_name ,constraint_type, status from user_constraints where table_name=’userinfo_c1’
;来查看。
3. 禁用检查约束。 disable constraint 查找的constraint名字 ;
sql> desc user_constraints 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- owner varchar2(30) constraint_name not null varchar2(30) constraint_type varchar2(1) table_name not null varchar2(30) search_condition long r_owner varchar2(30) r_constraint_name varchar2(30) delete_rule varchar2(9) status varchar2(8) deferrable varchar2(14) deferred varchar2(9) validated varchar2(13) generated varchar2(14) bad varchar2(3) rely varchar2(4) last_change date index_owner varchar2(30) index_name varchar2(30) invalid varchar2(7) view_related varchar2(14) sql> select constraint_name ,constraint_type,status from user_constraints where table_name='userinfo_c1' ; constraint_name c status ------------------------------ - -------- ck_salary c enabled sys_c0010837 p enabled sql> alter table userinfo_c1 disable constraint ck_salary ; 表已更改。 sql> select constraint_name ,constraint_type,status from user_constraints where table_name='userinfo_c1' ; constraint_name c status ------------------------------ - -------- ck_salary c disabled sys_c0010837 p enabled sql>
2)删除检查约束
语法
alter table table_name drop constraint constraint_name
实例
如上一样。