5、oracle之约束

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

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

创建表,设置非空约束

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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 系统用户: 1.sys system(sys权限最高) 2.sysman(操作企业管理器) 密码是安装的时候输入的...
    3hours阅读 5,557评论 0 0
  • 约束用于限制加入表数据的类型,目的是保证数据的一致性和完整性 创建格式:在创建表时规定约束(在Create添加),...
    产品小正阅读 4,676评论 0 1
  • 1、登录SQL plus 使用系统用户登录: 首先系统用户有:sys和system,这两个用户权限较高; 其中sy...
    方研梅阅读 4,064评论 0 0
  • 佳节良缘 真诚祝福 把酒言欢间 嬉闹如常 虽过之亦无过 更多的是祝福之心声 佳节常存 良缘难求 无需过多言语间的温...
    洢水河畔阅读 1,666评论 0 0
  • “真的是,有了孩子,家庭矛盾成几何增长,愈演愈烈,直到最后离婚,获得清静“ “教育观念不一致、家庭成长背景不一致,...
    东野圭吾阅读 2,707评论 0 0

友情链接更多精彩内容