码迷,mamicode.com
首页 > 数据库 > 详细

Oracle基础笔记九

时间:2014-12-21 01:57:00      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:employees   oracle   server   null   

第九章 约束


1.什么是约束

约束是表级的强制规定

有以下五种约束:NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK


2.注意事项

如果不指定约束名 ,Oracle server 自动按照 SYS_Cn 的格式指定约束名

创建和修改约束:

建表的同时

建表之后

可以在表级或列级定义约束

可以通过数据字典视图查看约束


3.表级约束和列级约束

作用范围:

①列级约束只能作用在一个列上

②表级约束可以作用在多个列上(当然表级约束也   

        可以作用在一个列上)

定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。

非空(not null) 约束只能定义在列上


4.定义约束

4.1NOT NULL 约束    只能定义在列级:


CREATE TABLE employees(

    employee_id    NUMBER(6),

    last_name      VARCHAR2(25) NOT NULL,

    salary         NUMBER(8,2),

    commission_pct NUMBER(2,2),

    hire_date      DATE 

                   CONSTRAINT emp_hire_date_nn

                   NOT NULL,

...  


4.2UNIQUE 约束    唯一约束,允许出现多个空值:NULL。

可以定义在表级或列级: 

CREATE TABLE employees(

    employee_id      NUMBER(6),

    last_name        VARCHAR2(25) UNIQUE,

    email            VARCHAR2(25),

    salary           NUMBER(8,2),

    commission_pct   NUMBER(2,2),

    hire_date        DATE NOT NULL,

...  

    CONSTRAINT emp_email_uk UNIQUE(email));


4.3PRIMARY KEY 约束   可以定义在表级或列级:

CREATE TABLE   departments(

    department_id        NUMBER(4),

    department_name      VARCHAR2(30)

    CONSTRAINT dept_name_nn NOT NULL,

    manager_id           NUMBER(6),

    location_id          NUMBER(4),

    CONSTRAINT dept_id_pk PRIMARY KEY(department_id));


4.4FOREIGN KEY 约束   可以定义在表级或列级:

CREATE TABLE employees(

    employee_id      NUMBER(6),

    last_name        VARCHAR2(25) NOT NULL,

    email            VARCHAR2(25),

    salary           NUMBER(8,2),

    commission_pct   NUMBER(2,2),

    hire_date        DATE NOT NULL,

...

    department_id    NUMBER(4),

    CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)

      REFERENCES departments(department_id),

    CONSTRAINT emp_email_uk UNIQUE(email));


FOREIGN KEY 约束的关键字:

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

REFERENCES: 标示在父表中的列

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

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


4.5CHECK 约束   定义每一行必须满足的条件

..., salary NUMBER(2)

     CONSTRAINT emp_salary_min  

            CHECK (salary > 0),...



5.添加约束的语法

使用 ALTER TABLE 语句:

添加或删除约束,但是不能修改约束

有效化或无效化约束

添加 NOT NULL 约束要使用 MODIFY 语句


以create table emp as select * from employees;为例,添加和删除约束

Alter table emp modify(empname varchar2(50) not null);


添加约束举例

ALTER TABLE     employees

ADD CONSTRAINT  emp_manager_fk 

  FOREIGN KEY(manager_id) 

  REFERENCES employees(employee_id);

Table altered.


从表 EMPLOYEES 中删除约束

ALTER TABLE      employees

DROP CONSTRAINT  emp_manager_fk;


无效化约束:在ALTER TABLE 语句中使用 DISABLE 子句将约束无效化。

ALTER TABLE employees

DISABLE CONSTRAINT emp_emp_id_pk;

激活约束:ENABLE 子句可将当前无效的约束激活 

ALTER TABLE employees

ENABLE CONSTRAINT emp_emp_id_pk;







本文出自 “阿成的博客” 博客,转载请与作者联系!

Oracle基础笔记九

标签:employees   oracle   server   null   

原文地址:http://fanyuecheng.blog.51cto.com/9529438/1592100

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!