zoukankan      html  css  js  c++  java
  • 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 各建一个。

  • 相关阅读:
    GIT里 SSH和HTTPS的区别
    迷宫 DFS 算法
    全排列 DFS 模板
    独立岛问题的BFS,DFS求解
    红丝绒蛋糕
    BFS,DFS伪代码
    【转】一个时代的剪影----汉
    AlbertRender --- 实时&离线全局光照渲染器(一)
    【linux驱动笔记】linux模块机制浅析
    【linux驱动笔记】字符设备驱动相关数据结构与算法
  • 原文地址:https://www.cnblogs.com/bdsir/p/8746977.html
Copyright © 2011-2022 走看看