MySQL 元数据
MySQL 索引 

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 等)来加以定义和实现。正确地使用约束可以帮助维护数据库的数据质量,避免无效或不一致的数据。