约束管理
约束是应用于表列的规则,用于确保数据完整性。本章介绍各种类型的约束。
约束类型
- PRIMARY KEY - 主键约束
- FOREIGN KEY - 外键约束
- UNIQUE - 唯一约束
- NOT NULL - 非空约束
- CHECK - 检查约束
- DEFAULT - 默认值约束
PRIMARY KEY 主键
sql
-- 单列主键
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
);
-- 复合主键
CREATE TABLE order_items (
order_id INT,
product_id INT,
PRIMARY KEY (order_id, product_id)
);
-- 为现有表添加主键
ALTER TABLE users
ADD PRIMARY KEY (id);FOREIGN KEY 外键
sql
-- 创建外键
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- 带级联操作的外键
CREATE TABLE orders (
id INT PRIMARY KEY,
user_id INT,
FOREIGN KEY (user_id) REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);UNIQUE 唯一约束
sql
-- 唯一约束
CREATE TABLE users (
id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE,
username VARCHAR(50) UNIQUE
);
-- 添加唯一约束
ALTER TABLE users
ADD UNIQUE (email);NOT NULL 非空约束
sql
-- 非空约束
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);CHECK 检查约束
sql
-- 检查约束
CREATE TABLE users (
id INT PRIMARY KEY,
age INT CHECK (age >= 18),
email VARCHAR(100) CHECK (email LIKE '%@%')
);DEFAULT 默认值
sql
-- 默认值
CREATE TABLE users (
id INT PRIMARY KEY,
status VARCHAR(20) DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);小结
- PRIMARY KEY:主键约束
- FOREIGN KEY:外键约束
- UNIQUE:唯一约束
- NOT NULL:非空约束
- CHECK:检查约束
- DEFAULT:默认值约束
下一步: 学习 VIEWS 视图