MySQL约束详解:从入门到精通
目录
- 一、主键约束(PRIMARY KEY)
- 二、外键约束(FOREIGN KEY)
- 三、唯一约束(UNIQUE)
- 四、检查约束(CHECK)
- 五、非空约束(NOT NULL)
- 六、默认约束(DEFAULT)
- 七、总结
一、主键约束(PRIMARY KEY)
主键约束用于唯一标识表中的每一行数据,确保数据的唯一性和完整性。一个表只能有一个主键,主键列不能包含 NULL 值。
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);
二、外键约束(FOREIGN KEY)
外键约束用于在两个表之间建立关系,确保数据的一致性。外键列的值必须是另一个表中主键列的值,或者为 NULL。
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
order_date DATE NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
三、唯一约束(UNIQUE)
唯一约束确保某一列或多个列的组合中的数据是唯一的,防止重复数据的插入。
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE
);
四、检查约束(CHECK)
检查约束用于限制列中的数据必须满足特定的条件。从 MySQL 8.0.17 开始,检查约束被支持。
CREATE TABLE products (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
CHECK (price > 0)
);
五、非空约束(NOT NULL)
非空约束确保某一列不能包含 NULL 值,强制要求插入数据时必须提供该列的值。
CREATE TABLE departments (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
description TEXT
);
六、默认约束(DEFAULT)
默认约束为某一列指定默认值,当插入数据时未提供该列的值,将自动使用默认值。
CREATE TABLE settings (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
value VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
七、总结
MySQL中的约束是确保数据完整性和一致性的强大工具。通过合理使用主键、外键、唯一约束、检查约束、非空约束和默认约束,可以有效地组织和管理数据,提高数据库的可靠性和性能。希望本文的示例和讲解对您有所帮助,如果您在使用MySQL约束时有任何疑问,欢迎随时交流探讨!