zoukankan      html  css  js  c++  java
  • DDL(Date Definition Language)-约束


    约束的定义

        约束是指一定的规则,规则就一定是不允许被违反的。
    Oracle中有以下五种约束:

    • NOT NULL(非空约束)只能定义在列级
    • UNIQUE(唯一值约束)允许多个空值
    • PRIMARY KEY(主键约束)不允许空值,且唯一
    • FOREIGN KEY(外键约束)只能添加子表已有的数据
    • CHECK(检查约束)

        约束可以在建表时创建约束,也可以在建表后追加创建。

    注意:

    约束是表一级的限制,如果存在依赖关系,约束可以防止错误的删除数据。


    非空约束(NOT NULL)

        限制列值允许、不允许为空。

    修改列为非空

    ALTER TABLE 表名
    MODIFY(
          列名 NOT NULL 
    );
    

    取消非空约束

    ALTER TABLE 表名
    MODIFY(
          列名 NULL 
    );
    

    创建表时列为非空

    CREATE TABLE 表名(
           列名 类型(范围) NOT NULL
    );
    

    唯一值约束(UNIQUE)

        限制列的值唯一,一个表中可以有多个列为唯一值约束。

    设置唯一值约束

    ALTER TABLE 表名
    ADD CONSTRAINTS 约束名
    UNIQUE(列名);
    

    注意:

    唯一值约束也可以复合,也就是说多列共享一个唯一值约束,删除约束也是一样的。


    主键约束(PRIMARY KEY)

    注意:

    一张表只能有一个主键,否则会出问题。

    设置主键约束

    ALTER TABLE 表名
    ADD CONSTRAINTS 主键名
    PRIMARY KEY(列名);
    

    删除主键约束

    ALTER TABLE 表名
    DROP CONSTRAINTS 主键名;
    

    复合主键

        多列组成一个主键

    ALTER TABLE 表名
    ADD CONSTRAINTS 主键名
    PRIMARY KEY(列名,列名···);
    

    外键约束(FOREIGN KEY)

        限制外键列值必须是引用的主表中的主键列存在的值,不限制空值。

    注意:

    引用的主表中的主键必须已经设置主键约束。

    示例

    --部门表(设置主键)
    ALTER TABLE test_depts
    ADD CONSTRAINTS dept_pk
    PRIMARY KEY(department_id);
    
    --员工表(设置外键)
    ALTER TABLE test_ecmps
    ADD CONSTRAINTS ecmp_fk
    FOREIGN KEY(dept_id)
    REFERENCES test_depts(department_id);
    

    级联删除

        级联删除是指当主表中的一条记录被删除,那么子表中所关联的记录也相应的自动删除。

    ALTER TABLE test_ecmps
    ADD CONSTRAINTS ecmp_deptid_fk
    FOREIGN KEY(dept_id)
    REFERENCES test_depts(department_id)
    ON DELETE CASCADE;
    

    创建表时添加级联删除

    CREATE TABLE table_name
    (
           column1 datatype null/not null,
           column2 datatype null/not null,
           ...
    
           CONSTRAINT fk_column
              FOREIGN KEY (column1, column2, ... column_n)
              REFERENCES parent_table (column1, column2, ... column_n)
              ON DELETE CASCADE
    );
    

    级联置空

        级联置空同级联删除一样,只是不删除,只清空。

    ALTER TABLE test_ecmps
    ADD CONSTRAINTS ecmp_deptid_fk
    FOREIGN KEY(dept_id)
    REFERENCES test_depts(department_id)
    ON DELETE SET NULL;
    

    检查约束(CHECK)

        限制自定义条件,忽略空值。

    --限制员工工资不能低于400
    ALTER TABLE test_ecmps
    ADD CONSTRAINTS ecmp_sal_chk
    CHECK(salary >= 400);
    

    自定义约束

    添加自定义约束

    ALTER TABLE 表名
    ADD CONSTRAINTS 约束名
    约束类型(列名);
    

    创建表时添加自定义约束

    CREATE TABLE 表名(
           列名 类型(取值范围)
           CONSTRAINTS 约束名
           约束类型(列名)
    );
    

    叶子的飘落,是风的追求,还是树的不挽留.
  • 相关阅读:
    把自己活成AI
    cmd 中文显示错误,解决办法
    直流通路,交流通路的理解 三极管
    欧拉公式的理解
    从一个量分别和两个量成正比,怎么推理出和他们乘积成正比?
    细说python类3——类的创建过程
    delphi 基础之二 面向对象概念初步
    delphi 基础之一 数据类型和基本语法
    delphi的多线程编程
    Delphi初学者应小心的六大陷阱
  • 原文地址:https://www.cnblogs.com/joyfulcode/p/14430162.html
Copyright © 2011-2022 走看看