在MySQL中,数据表的约束用于限定数据表中的数据,确保数据的完整性和一致性。常见的约束包括:
- PRIMARY KEY (PK):标识该字段为表的主键,可以唯一标识表中的每一行,不能有重复值,不能为NULL。
- NOT NULL:标识该字段不能有NULL值。
- UNIQUE:标识该字段的值是唯一的,不能有重复值。
- FOREIGN KEY (FK):标识该字段为表的外键,用于和其他表的主键建立联系,确保数据的一致性和完整性。
- CHECK:用于限定字段值必须满足指定的条件。(MySQL中不支持CHECK约束)
以下是创建数据表时添加这些约束的示例代码:
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
age INT CHECK (age > 0), -- MySQL不支持CHECK约束
class_id INT,
FOREIGN KEY (class_id) REFERENCES classes(id)
);
在这个例子中,students
表的id
字段是自增的主键,name
和email
字段不能为NULL,并且email
字段的值是唯一的。age
字段是一个检查约束,它限制了年龄必须大于0。class_id
字段是一个外键,与classes
表的id
字段关联,确保了学生分配到的班级ID是存在的。
请注意,由于MySQL不支持CHECK约束,上述代码中的age CHECK (age > 0)
部分不会生效。在实际使用中,年龄检查应通过应用程序逻辑来保证,或者通过事务和触发器等数据库功能来实现。