• MySQL 约束详解


    MySQL 约束详解

    MySQL 中的约束是用来保证数据的完整性的机制。数据完整性一般有以下三种形式:

    1. 实体完整性:保证表中有一个主键。
    2. 域完整性:保证数据每列的值满足特定条件。
    3. 引用完整性:保证两张表之间的引用关系。

    以上三种形式的完整性在 MySQL 中都有相应约束进行保证。

    使用主键和唯一键约束可以保证实体完整性;使用外键、合适和数据类型、触发器或者 DEFAULT 关键字也可以保证域完整性;使用外键和触发器可以保证引用完整性。可见 MySQL 提供了以下几种约束:

    1. Primary Key
    2. Unique Key
    3. Foreign Key
    4. Default
    5. NOT NULL
    6. 触发器

    Primary key、Unique Key 和 Foreign Key 约束

    Primary Key 用于约束唯一主键,唯一标识表中的每一条记录,主键对应的列不允许有 NULL 值和重复值,每个表都应该只有一个主键(包含 Unique 约束)。

    Unique Key 用于约束唯一索引,唯一标识表中的每一条记录,与 Primary Key 的区别在于可以有多个列同时被定义为 Unique Key。

    Foreign Key 用于保证域和参照的完整性。外键当中出现的值必须在其他表中为主键。同时当父表发生变化时,对子表的操作可以有 4 种方案:CASCADE(删除子表对应的行)、SET NULL(将子表对应行置空)、NO ACTION、RESTRICT。

    对错误数据的约束

    MySQL 允许非法的或不正确的数据的插入或更新,例如向 NOT NULL 的列中插入一个 NULL 值,那么此时 MySQL 会将 NULL 值更改为 0 值插入。如果想要 MySQL 在用户插入错误数据时进行报错而不是警告,需要设置参数 sql_mode。

    ENUM 和 SET 约束

    用来约束离散值在一个集合以内。如果是连续值和范围的约束需要通过触发器去实现。

    触发器与约束

    触发器的作用是在执行 INSERT、DELETE 和 UPDATE 命令之前或之后自动调用 SQL 命令或存储过程。一个表可以建立 6 个触发器,即 3 个操作 AFTER 和 BEFORE 各建一个。

  • 相关阅读:
    oracle 的一点累积
    ZT: 网页的一些技巧
    ZT: WEB学习资料
    开源java
    倒序显示文本
    plsql使用之debug
    转 一些shell经验
    lpad rpad
    2018.8.19 2018暑假集训之maxnum
    2018.8.17 题解 2018暑假集训之编辑距离
  • 原文地址:https://www.cnblogs.com/bdsir/p/8746977.html
Copyright © 2020-2023  润新知