SQL 约束 Constraints
学习 NOT NULL/UNIQUE/PRIMARY KEY/FOREIGN KEY · 难度:进阶 · +15XP
SQL 约束 Constraints
SQL 约束 Constraints — 保障数据完整性
学习前的准备
你需要一个 MySQL 数据库环境。约束是数据库表上的规则,用来限制可以插入或更新的数据。约束就是数据库的“守门员”,确保只有符合规则的数据才能进入表中。
NOT NULL — 不允许空值
CREATE TABLE users (
id INT NOT NULL,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
age INT
);
UNIQUE — 唯一约束
CREATE TABLE employees (
id INT NOT NULL,
email VARCHAR(100) UNIQUE,
phone VARCHAR(20) UNIQUE
);
-- 多列联合唯一
CREATE TABLE registrations (
user_id INT,
course_id INT,
UNIQUE(user_id, course_id)
);
PRIMARY KEY — 主键
主键是表中每一行数据的唯一标识。一个表只能有一个主键,自动包含 NOT NULL 和 UNIQUE。
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
);
FOREIGN KEY — 外键
外键用于建立表与表之间的关系,确保引用的数据确实存在。
CREATE TABLE departments (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL
);
CREATE TABLE employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
dept_id INT,
FOREIGN KEY (dept_id) REFERENCES departments(id)
ON DELETE SET NULL
ON UPDATE CASCADE
);
CHECK 约束
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT CHECK (age >= 0 AND age <= 150),
score DECIMAL(5,2) CHECK (score >= 0 AND score <= 100)
);
小结
约束是数据库设计中最重要的一环。NOT NULL 防止空值,UNIQUE 防止重复,PRIMARY KEY 标识每一行,FOREIGN KEY 维护表间关系,CHECK 定义自定义规则。让数据库承担数据验证的责任,而不是完全依赖应用代码。