MySQL约束条件详解

MySQL是一种流行的关系型数据库管理系统,用于存储和管理大量数据。在MySQL中,约束条件用于确保数据的完整性和一致性,以及提供数据的安全性。本文将介绍MySQL中常见的约束条件,并提供相应的代码示例。

1. 主键约束

主键约束用于唯一标识表中的每一行数据。主键列中的值必须是唯一的,并且不能为NULL。可以在创建表时定义主键约束,也可以在表已创建后通过修改表结构来添加主键约束。

创建表时定义主键约束

可以在CREATE TABLE语句中使用PRIMARY KEY关键字来定义主键约束。例如,创建一个名为"students"的表,其中包含"student_id"和"name"两列,其中"student_id"为主键:

CREATE TABLE students (
  student_id INT PRIMARY KEY,
  name VARCHAR(50)
);

修改表结构添加主键约束

可以使用ALTER TABLE语句来修改表结构并添加主键约束。例如,向一个已存在的表"students"中添加主键约束:

ALTER TABLE students
ADD PRIMARY KEY (student_id);

2. 唯一约束

唯一约束用于确保列中的值是唯一的,但允许NULL值。一个表可以有多个唯一约束,每个唯一约束可以包含一个或多个列。

创建表时定义唯一约束

可以在CREATE TABLE语句中使用UNIQUE关键字来定义唯一约束。例如,创建一个名为"users"的表,其中包含"username"和"email"两列,其中"username"和"email"的组合必须是唯一的:

CREATE TABLE users (
  username VARCHAR(50) UNIQUE,
  email VARCHAR(50) UNIQUE
);

修改表结构添加唯一约束

可以使用ALTER TABLE语句来修改表结构并添加唯一约束。例如,向一个已存在的表"users"中添加唯一约束:

ALTER TABLE users
ADD UNIQUE (username, email);

3. 外键约束

外键约束用于确保一个表中的数据与另一个表中的数据保持一致性。外键约束要求一个表的某个列的值必须在另一个表的某个列中存在。在MySQL中,外键约束需要使用InnoDB存储引擎。

创建表时定义外键约束

可以在CREATE TABLE语句中使用FOREIGN KEY关键字来定义外键约束。例如,创建一个名为"orders"的表,其中包含"order_id"、"customer_id"和"product_id"三列,其中"customer_id"和"product_id"分别是"customers"表和"products"表的主键:

CREATE TABLE orders (
  order_id INT PRIMARY KEY,
  customer_id INT,
  product_id INT,
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
  FOREIGN KEY (product_id) REFERENCES products(product_id)
);

修改表结构添加外键约束

可以使用ALTER TABLE语句来修改表结构并添加外键约束。例如,向一个已存在的表"orders"中添加外键约束:

ALTER TABLE orders
ADD CONSTRAINT fk_customer
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
ADD CONSTRAINT fk_product
FOREIGN KEY (product_id) REFERENCES products(product_id);

4. 检查约束

检查约束用于确保列中的值满足指定的条件。可以在创建表时定义检查约束,也可以在表已创建后通过修改表结构来添加检查约束。

创建表时定义检查约束

可以在CREATE TABLE语句中使用CHECK关键字来定义检查约束。例如,创建一个名为"employees"的表,其中包含"employee_id"和"salary"两列,其中"salary"必须大于等于0:

CREATE TABLE employees (
  employee_id INT PRIMARY KEY,
  salary DECIMAL(10,2) CHECK (salary >= 0)
);

修改表结构添加检查约束

可以使用ALTER TABLE语句来修改表结构并添加检查约束。例如,向一个已存在的表"employees"中添加检查约束:

ALTER TABLE employees
ADD CHECK