Skip to content

约束管理

约束是应用于表列的规则,用于确保数据完整性。本章介绍各种类型的约束。

约束类型

  1. PRIMARY KEY - 主键约束
  2. FOREIGN KEY - 外键约束
  3. UNIQUE - 唯一约束
  4. NOT NULL - 非空约束
  5. CHECK - 检查约束
  6. 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 视图