zoukankan      html  css  js  c++  java
  • oracle约束总结(not null/unique/primary key/foreign key/check)

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

    诸如:not null/unique/primary key/foreign key/check

    作用范围:
            ①列级约束仅仅能作用在一个列上
            ②表级约束能够作用在多个列上(当然表级约束也能够作用在一个列上)
    定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。


    — —NOT NULL:不为空约束,仅仅能定义在列级

    CREATE TABLE employees(
        employee_id    NUMBER(6),
        --<span style="color:#FF0000;">系统命名</span>
        last_name      VARCHAR2(25) <span style="color:#FF0000;">NOT NULL</span>,
        salary         NUMBER(8,2),
        commission_pct NUMBER(2,2),
        --<span style="color:#FF0000;">用户自己定义命名</span>
        hire_date      DATE  <span style="color:#FF0000;">CONSTRAINT emp_hire_date_nn NOT NULL</span>,
    
          能够在PL/SQLDEV的My objects-Tables-employees-Check constraints中查看该表的约束。


    — —UNIQUE:唯一约束,能够定义在表级或列级

    CREATE TABLE employees(
        employee_id      NUMBER(6),
        --<span style="color:#FF0000;">列级,系统命名唯一约束</span>
        last_name        VARCHAR2(25) <span style="color:#FF0000;">UNIQUE</span>,
        email            VARCHAR2(25),
        salary           NUMBER(8,2),
        commission_pct   NUMBER(2,2),
        hire_date        DATE NOT NULL,
    ...  
        --<span style="color:#FF0000;">表级,用户自己定义命名唯一约束</span>
        CONSTRAINT <span style="color:#FF0000;">emp_email_uk</span> UNIQUE(email));


    — —PRIMARY 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 <span style="color:#FF0000;">PRIMARY KEY</span>(department_id));



    — —FOREIGN KEY: 外键,在表级指定子表中的列

    — —REFERENCES: 标示在父表中的列

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

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

         constraint emp1_dept_id_fk <span style="color:#FF0000;">foreign key</span>(dept_id) <span style="color:#FF0000;">references</span> departments(department_id) <span style="color:#FF0000;">ON DELETE CASCADE</span>


    — —CHECK :定义每一行必须满足的条件

    ..., salary	NUMBER(2)
         CONSTRAINT emp_salary_min  
                CHECK (salary > 0),...



    1.怎样定义约束---在创建表的同一时候。加入相应属性的约束
       1.1 表级约束 & 列级约束
       
    create table emp1(
            employee_id number(8),
            salary number(8),
            --<span style="color:#FF0000;">列级约束</span>
            hire_date date not null,
            dept_id number(8),
            email varchar2(8) constraint emp1_email_uk unique,
            name varchar2(8) constaint emp1_name_uu not null,
            first_name varchar2(8),
            --<span style="color:#FF0000;">表级约束</span>
            constraint emp1_emp_id_pk primary key(employee_id),
            constraint emp1_fir_name_uk unique(first_name),
            --<span style="color:#FF0000;">外键约束</span>
            constraint emp1_dept_id_fk foreign key(dept_id) <span style="color:#FF0000;">references</span> departments(department_id) ON DELETE CASCADE
        )


      1.2 仅仅有not null 仅仅能使用列级约束。其它的约束两种方式皆可

    2.加入和删除表的约束--在创建表以后。仅仅能加入和删除,不能改动
        2.1加入
        alter table emp1
        add constaint emp1_sal_ck check(salary > 0)

        2.1.1对于not null来讲。不用add。须要使用modify:
       
        alter table emp1
        modify (salary not null)

        2.2 删除
        alter table emp1
        drop constaint emp1_sal_ck

        2.3使某一个约束失效:此约束还存在于表中,仅仅是不起作用
        alter table emp1
        disable constraint emp1_email_uk;

        2.4使某一个约束激活:激活以后。此约束具有约束力
        alter table emp1
        enable constraint emp1_email_uk;


        

  • 相关阅读:
    锤炼自己,即便是铁,也要是铁中的佼佼者。
    数据库简单学习
    英雄总结
    强化肖龙
    神兽世界
    魔豆魔豆
    硬链接和软连接的区别
    深拷贝和浅拷贝的区别
    C++程序员(终身学习)
    矫健《圣徒》读后感
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6907756.html
Copyright © 2011-2022 走看看