• 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 约束名
           约束类型(列名)
    );
    

    叶子的飘落,是风的追求,还是树的不挽留.
  • 相关阅读:
    window10+python3.7安装tensorflow--gpu tensorflow 安装
    解决plsql中文显示问号(???)问题
    卷积神经网络通俗解读
    NLP进阶之(七)膨胀卷积神经网络
    如何用简单易懂的例子解释条件随机场(CRF)模型?它和HMM有什么区别?
    【Learning Notes】线性链条件随机场(CRF)原理及实现
    【机器学习】【条件随机场CRF-2】CRF的预测算法之维特比算法(viterbi alg) 详解 + 示例讲解 + Python实现
    条件随机场(CRF)
    条件随机场(CRF)
    条件随机场(CRF)
  • 原文地址:https://www.cnblogs.com/joyfulcode/p/14430162.html
Copyright © 2020-2023  润新知