主键约束确保每行唯一且非空,外键维护表间引用完整性,唯一约束防止重复值,非空约束禁止NULL,检查约束限定取值范围,默认值约束提供字段默认数据。

在MySQL数据库中,约束条件是用来限制表中数据的规则,确保数据的准确性、一致性和完整性。通过定义约束,可以防止无效或不合理的数据被插入、更新或删除,从而提升数据库的可靠性。
常见的约束类型
MySQL支持多种约束类型,每种都有特定用途:
- PRIMARY KEY(主键约束):唯一标识表中的每一行,不允许重复值和NULL值。一个表只能有一个主键。
- FOREIGN KEY(外键约束):用于建立两个表之间的关联,确保一个表中的字段值必须在另一个表的主键中存在,维护引用完整性。
- UNIQUE(唯一约束):保证字段中的所有值都是唯一的,允许一个NULL值(具体行为依赖存储引擎)。
- NOT NULL(非空约束):规定字段不能为NULL,必须输入有效值。
- CHECK(检查约束):确保字段值满足指定条件(MySQL 8.0.16以上版本才完整支持)。
- DEFAULT(默认值约束):当没有为字段赋值时,自动使用预设的默认值。
如何定义约束
约束可以在创建表时(CREATE TABLE)或修改表时(ALTER TABLE)添加。
例如:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
age INT CHECK (age >= 0),
status ENUM('active', 'inactive') DEFAULT 'active',
department_id INT,
FOREIGN KEY (department_id) REFERENCES departments(id)
);
这段代码设置了主键、非空、唯一、检查、默认值和外键约束。
LANUX V1.0 蓝脑商务网站系统 适用于网店、公司宣传自己的品牌和产品。 系统在代码、页面方面设计简约,浏览和后台管理操作效率高。 此版本带可见即可得的html编辑器, 方便直观添加和编辑要发布的内容。 安装: 1.解压后,更换logo、分类名称、幻灯片的图片及名称和链接、联系我们等等页面。 2.将dbconfig.php里面的数据库配置更改为你的mysql数据库配置 3.将整个文件夹上传至
约束的作用场景
实际开发中,约束能有效避免脏数据:
- 用户注册时,邮箱字段设置UNIQUE,防止重复注册。
- 订单表中的用户ID使用FOREIGN KEY指向用户表,避免出现“孤儿订单”。
- 年龄字段加CHECK (age BETWEEN 0 AND 150),防止异常数值。
注意事项
使用约束时需要注意:
- 外键约束要求关联字段都建立了索引,且数据类型一致。
- InnoDB 存储引擎支持外键,MyISAM 不支持。
- 过多约束可能影响写入性能,需权衡数据完整性和效率。
基本上就这些。合理使用约束能让数据库更健壮,减少应用层的数据校验压力。









