Oracle之检查约束的使用(四)

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

实例
如上一样。

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐