MySQL中常见约束有哪些?作用和用法是什么?
数据库教程在MySQL数据库中,约束(Constraints)是作用于表中数据的一组规则,用于限制可以存储在表中的数据类型,以确保数据的准确性和可靠性。了解并掌握MySQL中的常见约束,对于设计高效、安全的数据库系统至关重要。以下是几种MySQL中常见的约束及其作用和用法:
-
主键约束(PRIMARY KEY)
- 作用:唯一标识表中的每一行记录,确保数据的唯一性和完整性。
- 用法:在创建表时,可以指定一个或多个列作为主键。主键列的值不能重复,且不能为NULL。
- 示例:
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100));
-
外键约束(FOREIGN KEY)
- 作用:用于在两个表之间建立联系,保证参照完整性。外键是一个表中的列,它必须是另一个表的主键或唯一键的值。
- 用法:在创建表时,通过
FOREIGN KEY
子句指定外键列,并通过REFERENCES
关键字指定它所引用的表和列。 - 示例:
CREATE TABLE orders (order_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, FOREIGN KEY (user_id) REFERENCES users(id));
-
唯一约束(UNIQUE)
- 作用:确保某列或列组合中的所有值都是唯一的,但不要求列值不为NULL(与主键不同,主键自动要求列值不为NULL)。
- 用法:在创建表或修改表结构时,使用
UNIQUE
关键字指定唯一约束的列。 - 示例:
ALTER TABLE users ADD UNIQUE (email);
-
检查约束(CHECK,MySQL 8.0.16及更高版本支持)
- 作用:确保列中的值满足特定的条件。这是通过定义一个布尔表达式来实现的,该表达式在数据插入或更新时进行评估。
- 用法:在创建表或修改表结构时,使用
CHECK
约束定义条件。 - 示例:
CREATE TABLE accounts (id INT AUTO_INCREMENT PRIMARY KEY, balance DECIMAL(10,2), CHECK (balance >= 0));
-
非空约束(NOT NULL)
- 作用:确保列中的值不能为NULL。
- 用法:在创建表或修改表结构时,通过
NOT NULL
约束指定哪些列不允许有NULL值。 - 示例:
CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL);
掌握这些约束的作用和用法,对于设计数据库模式、保证数据质量和实现复杂业务逻辑至关重要。它们共同协作,确保数据库中存储的数据既准确又可靠。