信息发布→ 登录 注册 退出

mysql约束种类的总结

发布时间:2025-10-21

点击量:
主键约束确保每行唯一且非空,一个表仅能有一个主键,可由单或多字段组成,自动创建唯一索引;2. 外键约束维护表间引用完整性,外键值必须存在于被引用表的主键或唯一键中,支持级联操作;3. 唯一约束保证字段或字段组合值唯一,允许NULL值;4. 非空约束强制字段不得插入NULL,适用于必填数据;5. 默认值约束在未指定字段值时自动填充默认值,支持常量或表达式;6. 检查约束限制字段取值范围,MySQL 8.0.16起才真正生效。

MySQL 中的约束是用来保证数据完整性和一致性的规则。通过在表上定义约束,可以限制字段的数据输入,防止无效或错误的数据被插入或更新。以下是 MySQL 常见的约束种类及其作用和使用方式的总结。

1. 主键约束(PRIMARY KEY)

作用:唯一标识表中的每一行记录,不允许重复,也不允许为 NULL。

特点:

  • 一个表只能有一个主键。
  • 可以由单个字段或多个字段组成(复合主键)。
  • 自动创建唯一索引,提高查询效率。
示例:
CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50)
);

2. 外键约束(FOREIGN KEY)

作用:维护表与表之间的引用完整性,确保一个表中的字段值必须在另一个表的主键或唯一键中存在。

特点:

  • 外键字段的数据类型需与被引用字段一致。
  • 可以设置级联操作(如 CASCADE),在父表记录删除或更新时自动处理子表数据。
示例:
CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  user_id INT,
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

3. 唯一约束(UNIQUE)

作用:确保某列或多列组合的值在表中是唯一的,但允许有 NULL 值(NULL 可出现多次)。

注意:主键也具有唯一性,但唯一约束可以用于非主键字段。

示例:
CREATE TABLE employees (
  emp_id INT PRIMARY KEY,
  email VARCHAR(100) UNIQUE
);

4. 非空约束(NOT NULL)

作用:限制字段不能插入 NULL 值,必须提供有效数据。

应用场景:常用于必填字段,如用户名、注册时间等。

示例:
CREATE TABLE products (
  name VARCHAR(100) NOT NULL,
  price DECIMAL(10,2)
);

5. 默认值约束(DEFAULT)

作用:当插入数据时未指定该字段的值,系统会自动使用默认值填充。

支持类型:字符串、数字、表达式(如 CURRENT_TIMESTAMP)。

示例:
CREATE TABLE logs (
  log_time DATETIME DEFAULT CURRENT_TIMESTAMP,
  status VARCHAR(20) DEFAULT 'pending'
);

6. 检查约束(CHECK)

作用:限制字段的取值范围,确保满足指定条件。

注意:MySQL 8.0.16 以上版本才真正支持 CHECK 约束并强制执行。

示例:
CREATE TABLE students (
  age INT CHECK (age >= 0 AND age <= 150),
  gender VARCHAR(10) CHECK (gender IN ('M', 'F'))
);

基本上就这些。合理使用这些约束能有效提升数据库的稳定性和数据质量。虽然部分老版本对某些约束(如 CHECK)支持较弱,但在设计阶段仍建议明确写出,便于维护和迁移。不复杂但容易忽略的是外键的级联行为和唯一约束对 NULL 的处理,需要特别留意实际业务需求。

标签:# 主键  # 注册时间  # 也不  # 或多  # 的是  # 有一个  # 必填  # 一键  # 级联  # 默认值  # mysql  # 数据库  # default  # 字符串  # 常量  # NULL  # 数据类型  # ai  # cad  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!