主键约束确保每行唯一且非空,如自增ID;非空约束防止关键字段缺失;唯一约束保证字段值不重复,适用于邮箱等;外键维护表间引用完整性,防止孤儿记录;检查约束限定取值范围,如年龄≥18。

在MySQL中,使用约束是确保数据库数据质量的核心手段。通过定义规则限制表中数据的取值和行为,可以有效防止无效、错误或不一致的数据进入系统。以下是几种常用的约束类型及其在保障数据质量中的实际应用。
主键约束(PRIMARY KEY)
主键用于唯一标识表中的每一行记录,不允许重复且不能为NULL。
使用主键能避免数据冗余和混淆,确保每条记录可被准确访问。
- 通常选择无业务含义的自增ID作为主键,例如 INT AUTO_INCREMENT
- 复合主键可用于多字段联合唯一标识场景,但需谨慎设计
示例:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL
);
非空约束(NOT NULL)
强制某列必须有值,防止关键字段缺失导致数据不完整。
对于登录名、创建时间等必要信息,应设置为NOT NULL。
- 避免后续查询因空值产生逻辑错误
- 与默认值(DEFAULT)配合使用更佳
示例:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);
唯一约束(UNIQUE)
保证某列或多列组合的值在整个表中不重复。
适用于邮箱、手机号、身份证号等需要唯一性的字段。
- 允许包含一个NULL值(视存储引擎而定)
- 可建立唯一索引以提升查询性能
示例:
CREATE TABLE accounts (
id INT PRIMARY KEY,
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
email VARCHAR(100) UNIQUE NOT NULL
);
外键约束(FOREIGN KEY)
维护表之间的引用完整性,确保子表中的关联字段值必须存在于父表中。
防止出现“孤儿记录”,比如订单指向一个不存在的用户。
- 支持级联操作:ON DELETE CASCADE 自动删除子记录
- ON UPDATE CASCADE 可同步更新关联键值
- 需注意外键会影响插入和删除性能
示例:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
检查约束(CHECK)
定义字段的取值范围或格式条件,MySQL 8.0+ 支持较好。
可用于限制年龄、状态码、金额等符合业务规则。
- CHECK表达式必须返回布尔结果
- 可结合枚举类型ENUM使用,增强校验效果
示例:
CREATE TABLE employees (
age INT CHECK (age >= 18 AND age
status ENUM('active', 'inactive') DEFAULT 'active'
);
合理组合这些约束,可以在数据库层面建立起坚固的数据质量防线。虽然应用层也应做验证,但数据库约束是最后一道可靠屏障。设计表结构时就明确约束规则,能大幅降低后期数据清洗和修复的成本。
基本上就这些。









