ORACLE 约束

                        ORACLE 约束

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:Oracle sql * plus  PLSQL Developer

作者:叶

撰写时间:2019年01月01日

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

约束: 对创建的表的列属性、字段进行的限制。

 诸如:

NOT NULL        ------ 非空约束

UNIQUE          ------ 唯一性约束

PRIMARY KEY      ------ 主键约束

FOREIGN KEY      ------ 外 键 约束

CHECK           ------- 检查性约束

查询定义约束的列:

    SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = ‘EMP10’;

                   

查询约束:

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = ‘EMP10’; 

             

  1. 定义约束---在创建表的同时,添加对应的属性的约束
    1. 表 级约束 & 列 级约束

非空约束:保证 列 值不能为空, 而且NOT NULL 约束只能定义在 列 级上。

检查性约束:定义每一行满足的条件。

CREATE TABLE EMP001 (

 EMP_ID NUMBER (8) PRIMARY KEY,

 SALARY NUMBER (8),

 ---列 级 约 束

 HIRE_DATE DATE NOT NULL,

 DEPT_ID NUMBER (8),

 EMAIL VARCHAR2 (8) CONSTRAINT EMP001_EMAIL_UK UNIQUE,

 NAME VARCHAR2 (8) CONSTRAINT EMP001_NAME_UU NOT NULL,

FIRST_NAME VARCHAR2 (8),

 ---表 级 约 束

 CONSTRAINT EMP001_EMP_ID_CK PRIMARY KEY (EMP_ID),

 CONSTRAINT EMP001_FIR_NAME_UK UNIQUE (FIRST_NAME),

 CONSTRAINT EMP001_DEPT_ID_FK FOREIGN KEY (DEPT_ID) REFERENCES DEPARTMENTS (DEPARTMENT_ID)

);

               

注: 如果不指定约束名,Oracle server 自动按照SYS_CN 的格式指定约束名。

   FOREIGN KEY: 在表 级 指定子表中的列

   REFERENCES: 标示在父表中的列

   ON DELETE CASCADE (级联删除): 当父表中的列被删除时,子表中相应的列也被删除

   ON DELETE SET NULL ( 级 联 置 空 ): 子表中相应的列置空。

 

1.2 只有 NOT NULL 只能使用列 级 约 束。其他的约束两种方式皆可。

添加约束:

使用 ALTER TABLE 语句:

  1. 添加或删除约束,但是不能修改约束。
  2. 有效化或无效化约束。
  3. 添加 NOT NULL 约束要使用 MODIFY 语句。

 

2.添加和删除表的约束—在创建表以后,只能添加和删除,不能修改

  2.1 添加:

ALTER TABLE EMP001

ADD CONSTRAINT EMP001_SAL_CK CHECK (SALARY >5000)

 

INSERT INTO EMP001

VALUES

(‘10’,’6000’,’01-5-2019’,’10’,’123456’,’Jeason’,’ZhangJie’)

           

 

新增一条数据时,要满足约束条件,否则会出错提示,如下:

          

  2.1.1 对于 NOT NULL 来讲,不用ADD, 需要使用MODIFY:

ALTER TABLE EMP001

MODIFY (SALARY NOT NULL)

                

2.2 删除:

ALTER TABLE EMP001

DROP CONSTRAINT EMP001_SAL_CK

   

2.3 使某一个约束失效:此约束还存在表中,只是不起作用

ALTER TABLE EMP001

DISABLE CONSTRAINT SYS_C0011491;

          

2.4 使某一个约束激活:激活以后,此约束具有约束力

ALTER TABLE EMP001

ENABLE CONSTRAINT SYS_C0011491;

                                                                                                                                                                                                                                                                                                                                                                                                                                    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值