mysql怎么约束_MySQL 约束详解

MySQL 约束详解

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

实体完整性:保证表中有一个主键。

域完整性:保证数据每列的值满足特定条件。

引用完整性:保证两张表之间的引用关系。

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

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

Primary Key

Unique Key

Foreign Key

Default

NOT NULL

触发器

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 各建一个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值