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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

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