5、oracle之约束

2018-08-22  本文已影响0人  如果不是废物谁又愿混吃等死

约束描述:定义规则,保证数据的完整;

分类,非空约束 、检查约束 、主键约束  、唯一约束

创建表,设置非空约束

CREATE TABLE table_name(column_name datatype NOT NULL,....)

修改表时添加非空约束

alter table table_name modify column_name datatype not null

修改表的时候去除非空约束:

ALTER TABLE table_name MODIFY column_name datatype NULL;

主键约束(设置主键约束后自动变为非空)

  查看约束的名字

desc user_constrain

 查询表的主键名字和状态

select constrain_name,status from user_constrain  where table_name="表名"

  1.创建表的时候 数据类型+primary key

              constraint(强制,限制,约束) constraint_name primary key(column...)

  2.(1)修改表的时候设置(添加)主键约束

              alter table table_name add constraint  constraint_name primary key(cloumn...);

    (2)修改主键约束的名字

              alter table table_name rename constraint old_name to     new_name

    (3)删除主键约束

              alter table table_name disable(禁用)/enable(启用)   contraint contraint_name

              彻底删除)alter table table_name drop constraint constriant_name     

              (彻底删除) alter table table_name drop primary key[cascade(外键)]

注意:主键约束的名称一般是:pk_name


外键约束(表示主从表之间的关系)

1、在创建表时设置外键约束(列级)

语法:CREATE TABLE table1(column_name datatype REFERENCES table2(column_name),...); --其中table2为主表,table1为从表

注:(1)设置外键约束时,主表字段必须为该表的主键字段

(2)主从表中相应的字段必须是同一个数据类型

(3)从表中外键字段的值必须来自主表中相应字段的值,或者为null值

在创建表时设置表级外键约束

CREATE TABLE table_name(

column_name1 datatype,...,

CONSTRAINT constraint_name FOERIGN KEY(column_name) REFERENCES table_name(column_name)[ON DELETE CASCADE]

on delete cascade --> 级联删除

修改表时添加外键约束

alter table table_name

add constraint constraint_name foreign key(column_name) references

table_name(column_name) [on delete cascade]

禁用外键约束

语法:ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT fk_name;

删除外键约束

语法:ALTER TABLE table_name DROP CONSTRAINT pk_name;

查看约束

语法:select constrain_name,constraint_type,status from user_constraints

where table_name='XXXX';

status P代表主键 R代表外键

禁用外键约束:

 alter table table_name

 disable constraint constrain_name;

启用外键约束:

 alter table table_name

 enable constraint constrain_name;

删除外键约束:

 alter table table_name

drop constraint constrain_name;

注意:外键约束的名称一般是:fk_name

唯一约束

唯一约束值唯一,主键约束的值也是唯一的,区别:主键约束的值不能为空,唯一约束的值可以为空;主键约束的只能有一个,唯一约束可以有多个。

创建表时设置唯一约束(列级设置比较简单,表级设置唯一约束):

创建表的最后加上一个语句:(创建多个唯一约束要分开写)

 constraint constraint_name unique(table_column);

 constraint constraint_name unique(table_column1);

修改表的过程中添加唯一约束:

alter table tabname add constraint un_id unique(typeid);

1.列级

create table table_name(

clumn_name datatype unique,...

);

2.表级

create table table_name(

clumn_name datatype ,....

constraint constraint_name unique(clumn_name)

);

删除表中的唯一约束:

  1.禁用:同之前的约束禁用一样

        alter table [table_name]

        disable constraint constraint_name; 

   2. 彻底删除唯一约束:

        alter  table [table_name]

        drop  constraint constraint_name;

3.注意:唯一约束的名称一般是:u_name

检查约束

1、作用:让表中的值更具有实际意义。

注:检查约束在一张表中也是可以有多个的。

2、在创建表时设置检查约束(列级)

语法:CREATE TABLE table_name(column_name datatype CHECK(expressions),...);

注:expressions为条件表达式

3、在创建表时设置检查约束(表级)

语法:CREATE TABLE table_name(

column_name datatype,...,

CONSTRAINT c_name CHECK(expressions));

表级例子

SQL> create table userinfo_c1

2 (id varchar2(10) primary key,

3 username varchar2(20),

4 salary number(5,0),

5 constraint ck_salary check(salary>0));

修改表时添加检查约束

alter table userinfo_c3 add constraint ck_salary_new check(salary>0);

删除检查约束

ALTER TABLE table_name

Disable(禁用) 或者enable(启用) constraint constraint_name

ALTER TABLE table_name

drop constraint constraint_name

.注意:唯一约束的名称一般是:ck_name

约束小结

1、五个中就主键约束是要求唯一的,而且可以由多个字段组成,也就是表级约束可以多个字段写在一起;

2、五个中只有外键约束是涉及两个表的;

3、五个中只有非空约束是没有表级约束,只有列级约束的;

4、在修改表的时候修改约束,也是非空约束不同,使用的是修改字段的语句:

alter table userinfo modify username  varchar2(20)   null;

其他的使用都是 alter table 表名

add constraint 约束名 check/primary key/unique(字段,检查的是字段条件);  //外键:add constraint   外键名字 foreign key (从字段名)references 主表名(主表字段);

5、非空约束没有名字,其他都是可以改名字的

alter table  表名称  rename  constraint  用来的约束名   to  新的约束名;

查询的时候使用数据字典:user_constraints

select constraint_name,constraint_type,status from user_constraints 2 where table_name='USERINFO_C3';

6、删除约束,非空约束也是使用修改字段的语句,其他的都是使用下面:

1.禁用约束

 ALTER TABLE table_name

 DISABLE|ENABLE CONSTRAINT constraint_name;

2.直接删除约束

>ALTER TABLE table_name

 DROP CONSTRAINT constraint_name;

另外主键约束因为是唯一的,有一种特殊的删除方法:

drop primary key;

上一篇下一篇

猜你喜欢

热点阅读