zoukankan      html  css  js  c++  java
  • Oracle中的约束

    ORACLE提供了如下几种约束:NOT NULL 非空、UNIQUE 唯一、PRIMARY KEY 主键、FOREIGN KEY 外键、CHECK 条件检查。

    一、not null约束

    1、建立表时指定约束。

    SQL> create table aa3(id number(10) constraint aa3_nn not null,

      2    name varchar2(20),

      3    company varchar2(20));

    2、表建立好后再指定约束。

    SQL> drop table aa3;

    SQL> create table aa3(

      2     id number(10),

      3     name varchar2(20),

      4     company varchar2(20));

    SQL> alter table aa3 modify(id constraint aa3_nn not null);

    3、删除约束。

    SQL> alter table aa3 drop constraint aa3_nn;

    二、check条件检查

    SQL> create table aa3(id number(10) constraint aa3_id_c check(id>=1),

      2    name varchar2(20),

      3    company varchar2(20));

    属于列级约束。

    SQL> create table aa3(id number(10),

      2    name varchar2(20),

      3    company varchar2(20),

      4    constraint aa3_id_c check(id>=1)

      5  );

    属于表级约束。

    注:约束中,非空约束必须是列约束。其他类型的约束都即可以是列约束,也可以创建为表约束。

    三、unique约束

    1、列级约束

    SQL> create table aa3(id number(10) constraint aa3_id_u unique,

      2    name varchar2(20),

      3    company varchar2(20));

    2、表级约束

    SQL> create table aa3(id number(10),

      2    name varchar2(20),

      3    company varchar2(20),

      4    constraint aa3_id_u unique(id)

      5  );

    四、主键约束

    主键约束在效果上,相当于唯一约束+非空约束。也就是,即要求列值不能重复,又要求列值必须非空。要注意的是,在同一列上,不能即有主键约束,又有唯一约束。

    五、外键约束

    外键约束则必须主键结合在一起使用。在创建约束时,先必须先有一个主键,然后,根据此主键,创建一个相关联的外键约束。也就是说,外键约束必须对应一个主键,不能创建独立的外键约束。

    创建表

    create table emp1(id number(10), name varchar2(20), dept number(10));

    create table dept1(dept number(10), dept_name varchar2(20));

    设置主外键约束

    alter table dept1 add(constraint dept1_dept_p primary key(dept));

    alter table emp1 add(constraint emp1_dept_f foreign key(dept) references dept1(dept));

    六、级联删除

             delete from dept1 where dept=3;不能删除数据,违背了主外键约束。

             将子表外键设为级联删除,这样删除主表部门3的数据时,子表有关部门3的数据也就跟着删除了。

    alter table emp1 drop constraint emp1_dept_f;

    SQL> alter table emp1 add(constraint emp1_dept_f

      2   foreign key(dep        t)

      3   references dept1(dept)

      4   on delete cascade);

    ORACLE不允许删除父表。除非使用级联约束cascade constraints将先删除子表上的外键,再删除父表。

    drop table dept1 cascade constraints;

    七、约束的禁用与启用

    1、约束的禁用

             Alter table 表名 disable constraint 约束名 cascade;

             在主外键约束中,先禁用外键,再禁用主键。

    2、约束的启用

             Alter table 表名 enable constraint 约束名 cascade;

             在主外键约束中,先启用主键,再启用外键

    来自http://xiangxuehai-jiaer.iteye.com/blog/1448094

  • 相关阅读:
    java Object类是可以接收集合类型的
    java.lang.String中[ "张飞"+1+1 ] 和 [ "张飞"+(1+1) ]
    AFL Fuzz入门
    [转载]linux与grep
    linux下安装clamav
    [转载]Linux连续执行多条命令
    [转载]linux下各文件夹的结构说明及用途介绍
    [转载]linux常用命令
    [转载]Ubuntu 16.04 蓝屏解决方案
    pycharm修改python版本
  • 原文地址:https://www.cnblogs.com/elleniou/p/2629789.html
Copyright © 2011-2022 走看看