1. 主键约束(PRIMARY KEY)
作用:主键约束用于唯一标识表中的每一行记录。主键列的值必须是唯一的,且不允许为NULL。
用法:在创建表时,通过PRIMARY KEY关键字定义主键列。例如:
CREATE TABLE users (
id INT AUTO_INCREMENT,
...
在MySQL数据库中,约束(Constraints)是确保数据准确性和可靠性的重要机制。它们限制了可以插入到表中的数据类型,保证了数据的完整性。了解并正确使用这些约束,对于设计高效、健壮的数据库系统至关重要。下面,我们将深入探讨MySQL中几种常见的约束类型,以及它们的作用和用法。
1. 主键约束(PRIMARY KEY)
作用:主键约束用于唯一标识表中的每一行记录。主键列的值必须是唯一的,且不允许为NULL。
用法:在创建表时,通过PRIMARY KEY
关键字定义主键列。例如:
CREATE TABLE users (
id INT AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
2. 外键约束(FOREIGN KEY)
作用:外键约束用于在两个表之间建立关联,确保一个表中的值对应于另一个表中的值,从而维护表之间的引用完整性。
用法:在创建或修改表时,通过FOREIGN KEY
关键字定义外键列,并指定其参照的表和列。例如:
CREATE TABLE orders (
order_id INT AUTO_INCREMENT,
user_id INT,
PRIMARY KEY (order_id),
FOREIGN KEY (user_id) REFERENCES users(id)
);
3. 唯一约束(UNIQUE)
作用:唯一约束保证表中每一行在该列上的值都是唯一的。与主键不同,唯一约束的列允许有多个NULL值(除非列被定义为NOT NULL)。
用法:在创建表时,通过UNIQUE
关键字定义唯一约束。例如:
CREATE TABLE emails (
email_id INT AUTO_INCREMENT,
email VARCHAR(100),
UNIQUE (email)
);
4. 检查约束(CHECK)
作用:检查约束用于限制列中可以插入的值的范围。它允许你定义一个条件表达式,该表达式必须对所有新值或更新值求值为TRUE。
用法:虽然MySQL 8.0.16之前的版本对CHECK约束的支持有限,但从MySQL 8.0.16开始,CHECK约束得到了全面支持。例如:
CREATE TABLE salaries (
salary_id INT AUTO_INCREMENT,
amount DECIMAL(10, 2),
CHECK (amount > 0),
PRIMARY KEY (salary_id)
);
5. 非空约束(NOT NULL)
作用:非空约束确保列中的每个值都必须是非NULL的。
用法:在创建表时,通过在列定义后添加NOT NULL
关键字来应用此约束。例如:
CREATE TABLE departments (
department_id INT AUTO_INCREMENT,
department_name VARCHAR(50) NOT NULL,
PRIMARY KEY (department_id)
);

这些约束共同作用于MySQL数据库,确保了数据的准确性、一致性和完整性。通过合理使用这些约束,你可以设计出更加健壮、易于维护的数据库系统。