oracle学习笔记二

约束是在表上强制执行的数据校验规则.
当表中数据有相互依赖性时,可以保护相关的数据不被删除.
Oracle 支持下面五类完整性约束:
1、NOT 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
)
//查看用户的约束
   select * from user_constraints;
//查看表的约束
  select * from user_constraints where table_name='EMPLOYEES”




2、UNIQUE Key 唯一键
唯一性约束条件确保所在的字段或者字段组合不出现重复值
唯一性约束条件的字段允许出现(1或多个)空值
Oracle将为唯一性约束条件创建对应的唯一性索引
CREATE TABLE employees(
    employee_id      NUMBER(6)   UNIQUE,
    last_name        VARCHAR2(25) NOT NULL,
    email            VARCHAR2(25),
    salary           NUMBER(8,2),
    commission_pct   NUMBER(2,2),
    hire_date        DATE NOT NULL,
...  
    CONSTRAINT emp_email_uk UNIQUE(email));


3、PRIMARY KEY 主键
主键从功能上看相当于非空且唯一
一个表中只允许一个主键
主键是表中能够唯一确定一个行数据的字段
主键字段可以是单字段或者是多字段的组合
Oracle为主键创建对应的唯一性索引


      CONSTRAINT dept_id_pk PRIMARY KEY(department_id)
表级
alter table  表名 
add CONSTRAINT dept_id_pk PRIMARY KEY(department_id);




4、FOREIGN KEY 外键
外键是构建于一个表的两个字段或者两个表的两个字段之间的关系
外键确保了相关的两个字段的关系:
*子表外键列的值必须在主表参照列值的范围内,或者为空
主表主键值被子表参照时,主表记录不允许被删除
外键约束条件参照的是主表的一个或者多个字段的值,通常被外键参照的 是主表的主键或者唯一键


CONSTRAINT 键名 FOREIGN KEY (字段名)
      REFERENCES 主表名(字段名)
   
表级
alert table 表名
CONSTRAINT 键名 FOREIGN KEY (字段名)
      REFERENCES 主表名(字段名)


5、CHECK 检察


CONSTRAINT 检察名  
            CHECK (salary > 0),...








可增加或删除约束,但不能直接修改
     ALTER TABLE table
     ADD [CONSTRAINT constraint]    type (column);


ALTER TABLE     employees
ADD CONSTRAINT  emp_manager_fk 
                FOREIGN KEY(manager_id) 
                         REFERENCES employees(employee_id);


删除约束emp_manager_fk
      ALTER TABLE  employees
      DROP CONSTRAINT  emp_manager_fk;

posted @ 2012-09-06 18:43  retacn_yue  阅读(113)  评论(0编辑  收藏  举报