MySQL 约束
在 MySQL 中,约束(Constraints)用于在表中强制数据的完整性、一致性和可靠性。它们定义了应该如何在表中插入或更新数据的规则。MySQL 支持多种类型的约束,以下是一些常见的约束类型及其用法:
主键约束(Primary Key Constraint)
主键约束用于唯一标识表中的每一行数据,并且保证每行数据都有唯一的标识符。
创建表时指定主键约束:
CREATE TABLE students ( student_id INT PRIMARY KEY, student_name VARCHAR(50), age INT );
在上面的例子中,student_id
被指定为主键,确保每个学生的 student_id
值都是唯一的。
添加主键约束到现有表:
ALTER TABLE students ADD PRIMARY KEY (student_id);
外键约束(Foreign Key Constraint)
外键约束用于维护表与表之间的引用完整性,确保一个表中的外键值必须在另一个表中存在。
创建表时指定外键约束:
CREATE TABLE students ( student_id INT PRIMARY KEY, class_id INT, student_name VARCHAR(50) DEFAULT NULL, FOREIGN KEY (class_id) REFERENCES classes(class_id) );
在上面的例子中,students 表的 class_id
列是一个外键,它参考了 classes 表中的 class_id
列。
添加外键约束到现有表:
ALTER TABLE students ADD CONSTRAINT fk_class_id FOREIGN KEY (class_id) REFERENCES classes(class_id);
这种方式可以在已存在的表上添加外键约束。
唯一约束(Unique Constraint)
唯一约束确保表中的某个列或一组列的值是唯一的,但允许NULL值。
创建表时指定唯一约束:
CREATE TABLE students ( student_id INT PRIMARY KEY, student_name VARCHAR(50) NOT NULL, email VARCHAR(30) UNIQUE );
在上面的例子中,email 列被指定为唯一约束,确保每个学生的 email 值是唯一的。
添加唯一约束到现有表:
ALTER TABLE students ADD CONSTRAINT uc_email UNIQUE (email);
这种方式可以在已存在的表上添加唯一约束。
检查约束(Check Constraint)
MySQL不直接支持CHECK约束,但可以通过使用触发器或应用层面的验证来实现类似的功能。CHECK约束通常用于确保列中的值符合特定条件。
NOT NULL 约束
NOT NULL约束确保表中的列不接受NULL值。
CREATE TABLE students ( student_id INT PRIMARY KEY, student_name VARCHAR(50) NOT NULL, email VARCHAR(30) UNIQUE );
这个例子中,student_name、email两列均定义为不能为空。
总结
约束在 MySQL 中是确保数据完整性和一致性的重要工具,可以通过表的定义(如 PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL 等)来加以定义和实现。正确地使用约束可以帮助维护数据库的数据质量,避免无效或不一致的数据。