MySQL支持以下类型的完整性约束:
- 主键约束
- 唯一约束
- 外键约束
- 检查约束
下面将以学生表为例演示如何在MySQL中添加完整性约束。
CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT NOT NULL, gender VARCHAR(10), major VARCHAR(50), phone VARCHAR(20) UNIQUE, email VARCHAR(50) UNIQUE, foreign key (major) references majors(name) );
以上示例中,大家定义了students表,其中包含了id、name、age、gender、major、phone和email列。通过使用PRIMARY KEY关键词大家定义了id列为主键列。主键列的值在表中必须唯一且不能为空。
大家还使用UNIQUE关键词在phone和email列上定义了唯一约束。唯一约束要求列中的每个值都必须唯一,这意味着在表中不允许有重复的值。
外键约束指定一个或多个列的值必须符合另一个表中的值。在学生表中,大家使用foreign key关键字将major列设置为外键列,并将其映射到majors表中的name列。这表示students表中的major值必须是majors表中的一个有效值。如果尝试插入一个majors表中不存在的值,则会出现外键约束错误。
最后,大家可以使用CHECK约束在表中定义各种需要的约束条件。例如,大家可以使用CHECK约束限制age列的最小和最大值:
CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT NOT NULL CHECK (age >= 18 AND age<= 60), ... );
以上示例限制了age值必须在18到60岁之间。
在MySQL中添加完整性约束非常容易,只需在CREATE TABLE语句中使用相应的关键字即可。这可以确保在插入或更新表中的数据时,只允许合法的值出现。