约束
MySQL中的约束(Constraints)是用于限制表中的数据,以确保数据的准确性和可靠性。这些约束可以在创建表时定义,也可以在表创建后通过ALTER TABLE命令添加。
以下是MySQL中常用的几种约束:
1. NOT NULL约束
确保某列不能有NULL值。
CREATE TABLE example (
id INT NOT NULL,
name VARCHAR(50) NOT NULL
);
2. UNIQUE约束
确保某列中的所有值都是唯一的。
CREATE TABLE example (
id INT NOT NULL,
email VARCHAR(100) UNIQUE
);
3. PRIMARY KEY约束
唯一标识数据库表中的每一行/记录。一个表只能有一个主键,这个主键可以是单列或多列的组合。主键列中的值必须是唯一的,并且不允许为NULL。
CREATE TABLE example (
id INT PRIMARY KEY,
name VARCHAR(50)
);
4. FOREIGN KEY约束
用于在表之间创建链接,以保持引用完整性。一个表的外键是另一个表的主键。外键的值必须在被引用的表的主键中存在。
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50)
);
5. CHECK约束
用于限制列中的值范围。然而,值得注意的是,在MySQL 8.0.16之前的版本中,CHECK约束在创建表时会被解析但不会被存储或执行。从MySQL 8.0.16开始,CHECK约束开始被支持并执行。
CREATE TABLE example (
id INT,
age INT CHECK (age >= 0 AND age <= 150)
);
6. DEFAULT约束
当没有为列指定值时,为列提供默认值。
CREATE TABLE example (
id INT,
name VARCHAR(50) DEFAULT 'Anonymous'
);
7. AUTO_INCREMENT约束
通常与主键一起使用,为整数列自动生成一个唯一的数字。每次插入新记录时,AUTO_INCREMENT列的值会自动递增。
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
8. ENUM类型约束
ENUM类型允许你指定一个字符串对象的值,该对象只能是此列定义中允许的值列表中的一个。
CREATE TABLE example (
name VARCHAR(50),
status ENUM('active', 'inactive', 'pending')
);
在定义表时,可以根据需要混合使用这些约束来确保数据的完整性和准确性。