约束条件 | 说明 | 示例 | 用法 |
主键约束 (PRIMARY KEY) | 唯一标识表中的每一行记录,一个表只能有一个主键,主键列的值不能为NULL且不能重复 | CREATE TABLE students ( student_id INT PRIMARY KEY name VARCHAR(50) ); | 创建表时直接指定某一列为主键,或用PRIMARY KEY定义多列组合为主键 |
外键约束 (FOREIGN KEY) | 建立表与表之间的关联关系,确保一个表中的数据引用另一个表中存在的数据,外键指向的列通常是另一个表的主键 | CREATE TABLE enrollments ( enrollment_id INT PRIMARY KEY, student_id INT, course_id INT, FOREIGN KEY (course_id) 其他表名 courses(字段名) ); | 创建表时用FOREIGN KEY指定外键列,用REFERENCES指定引用的表和列 |
唯一约束 (UNIQUE) | 确保列中的值是唯一的,允许列中有一个NULL值 | CREATE TABLE users ( user_id INT PRIMARY KEY, email VARCHAR(100) UNIQUE ); | 创建表时用UNIQUE指定列具有唯一约束 |
非空约束 (NOT NULL) | 确保列中的值不能为空,插入或更新数据时该列必须有值 | CREATE TABLE employees ( employee_id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, salary DECIMAL(10, 2) ); | 创建表时用NOT NULL指定列不允许为空 |
默认约束 (DEFAULT) | 为列指定默认值,插入数据时若未为该列提供值,则使用默认值 | CREATE TABLE orders ( order_id INT PRIMARY KEY, order_date DATE DEFAULT CURDATE(), status VARCHAR(20) DEFAULT 'Pending' ); | 创建表时用DEFAULT指定列的默认值 |
检查约束 (CHECK) | 确保列中的值满足特定的条件,但 MySQL 从 8.0.16 版本开始支持CHECK约束语法,实际不强制执行检查 | CREATE TABLE products ( product_id INT PRIMARY KEY, price DECIMAL(10, 2) CHECK (price > 0) ); | 创建表时用CHECK指定列需要满足的条件 |
自增约束 (AUTO_INCREMENT) | 为整数类型的列自动生成唯一的递增数值,通常与主键一起使用 | CREATE TABLE customers ( customer_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) ); | 创建表时用AUTO_INCREMENT指定列具有自增属性 |