MySQL 约束 —— 保证数据完整性的核心

分类:数据库 时间:2026-02-24 浏览:1
1

一、约束的作用

约束是对表中字段的规则限制,用于保证数据的正确性、唯一性和完整性,避免脏数据产生。

二、常用约束类型

约束名称关键字作用
主键约束PRIMARY KEY唯一标识记录,非空且唯一
非空约束NOT NULL字段值不能为 NULL
唯一约束UNIQUE字段值唯一(可 NULL)
外键约束FOREIGN KEY关联两张表,保证数据一致性
默认约束DEFAULT字段默认值
自增约束AUTO_INCREMENT主键自动递增(仅 INT 类型)

三、约束使用示例

1. 创建表时添加约束(回顾)

CREATE TABLE IF NOT EXISTS order_info (
    id INT PRIMARY KEY AUTO_INCREMENT, -- 主键+自增
    order_no VARCHAR(30) NOT NULL UNIQUE, -- 订单号,非空+唯一
    user_id INT NOT NULL, -- 关联用户ID
    amount DECIMAL(10,2) NOT NULL DEFAULT 0.00, -- 金额,默认0.00
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    -- 外键约束:关联user表的id字段
    FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE
);

说明:ON DELETE CASCADE表示当主表(user)的记录被删除时,从表(order_info)关联记录也自动删除。

2. 给已有表添加约束

-- 给order_info表的amount字段添加非空约束
ALTER TABLE order_info MODIFY COLUMN amount DECIMAL(10,2) NOT NULL;

-- 给user表添加唯一约束(手机号字段)
ALTER TABLE user ADD COLUMN phone VARCHAR(11);
ALTER TABLE user ADD UNIQUE (phone);

3. 删除约束

-- 删除user表的phone字段唯一约束
ALTER TABLE user DROP INDEX phone;

-- 删除外键约束(需先查外键名)
SHOW CREATE TABLE order_info; -- 查外键名,假设为order_info_ibfk_1
ALTER TABLE order_info DROP FOREIGN KEY order_info_ibfk_1;

总结

  1. 主键约束是核心,保证记录唯一性,通常搭配自增约束使用;

  2. 外键约束关联多表数据,需注意主从表的删除 / 更新规则;

  3. WHERE 筛选原始数据,HAVING 筛选分组后的数据。

文章链接:http://www.qwkf.cn//shujuku/35.html
文章标题:MySQL 约束 —— 保证数据完整性的核心

相关阅读