MySQL中的唯一性约束(UNIQUE KEY)和检查约束(CHECK)是数据库表定义中的两种不同类型的约束。
唯一性约束(UNIQUE KEY):
- 保证某一列或几列的组合不会有重复值。
- 在创建表时使用
UNIQUE
关键字定义。 - 可以在创建表后使用
ALTER TABLE
或 CREATE TABLE
语句添加。
例如,如果你想要确保电子邮件地址在'users'表中是唯一的,你可以这样定义'email'列:
CREATE TABLE users (
id INT NOT NULL,
email VARCHAR(255) UNIQUE,
PRIMARY KEY (id)
);
检查约束(CHECK):
- 确保列中的值满足特定条件。
- 在创建表时使用
CHECK
关键字定义。 - 不是所有的MySQL存储引擎都支持检查约束。
例如,如果你想要确保在'users'表中年龄列的值大于18,你可以这样定义'age'列:
CREATE TABLE users (
id INT NOT NULL,
age INT CHECK (age > 18),
PRIMARY KEY (id)
);
请注意,从MySQL 5.7.17开始,CHECK
约束在默认的 InnoDB
存储引擎中被明确地不支持。在这个版本之前,InnoDB
支持 CHECK
约束,但在之后的版本中被弃用并从存储引擎中移除。如果你需要使用这种类型的约束,你可能需要考虑使用其他存储引擎,如 Federated
、NDB Cluster
或者 MyISAM
。