当前位置: 首页 > news >正文

【MySQL】数据库约束

MySQL 数据库约束:核心概念、类型与应用详解

MySQL 中的数据库约束是作用于数据表列 / 行的规则,用于限制存入数据的格式、范围和关联性,核心目的是保障数据的完整性(准确性、一致性),避免无效、冗余或冲突的数据进入数据库,是数据库设计和数据质量管理的核心环节。

一、约束的核心类型及使用场景

MySQL 支持 6 类核心约束,可分为列级约束(仅作用于单个列)和表级约束(可作用于多个列),具体如下:
约束类型 核心作用 适用场景 示例语法(创建表时)
非空约束(NOT NULL) 限制列的值不能为 NULL(空值) 必须填写的字段(如用户名、手机号) username VARCHAR(50) NOT NULL
唯一约束(UNIQUE) 限制列的值在整张表中唯一(可包含一个 NULL) 唯一标识字段(如邮箱、身份证号) email VARCHAR(100) UNIQUE
主键约束(PRIMARY KEY) 非空 + 唯一,唯一标识表中每一行(一张表仅一个主键) 核心标识字段(如用户 ID、订单 ID) id INT PRIMARY KEY AUTO_INCREMENT
外键约束(FOREIGN KEY) 建立两张表的关联,限制外键列的值必须来自主表的主键 / 唯一列 关联表(如订单表关联用户表) user_id INT FOREIGN KEY REFERENCES user(id)
检查约束(CHECK) 限制列的值满足指定条件(MySQL 8.0.16+ 正式支持) 数值范围 / 格式校验(如年龄、金额) age INT CHECK (age >= 0 AND age <= 120)
默认约束(DEFAULT) 列未赋值时自动填充默认值 可选字段(如性别、状态) gender CHAR(1) DEFAULT '男'

二、关键约束深度解析

1. 主键约束(PRIMARY KEY)
  • 特性:一张表只能有一个主键,主键列必须非空且唯一;可设置为「复合主键」(多个列组合成主键,如订单详情表 order_id + product_id)。
  • 常用配置:搭配 AUTO_INCREMENT 实现主键自增(仅适用于 INT/BIGINT 等数值类型),避免手动赋值冲突。
    sql
     
    CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT, -- 自增主键username VARCHAR(50) NOT NULL
    );
     
2. 外键约束(FOREIGN KEY)
  • 核心规则:外键列的数据类型必须与主表关联列一致;主表删除 / 更新数据时,需通过 ON DELETE/UPDATE 定义关联行为:
    • ON DELETE CASCADE:主表删除,从表关联数据同步删除(如删除用户时,删除其所有订单);
    • ON DELETE SET NULL:主表删除,从表外键列设为 NULL(需外键列允许 NULL);
    • ON DELETE RESTRICT:主表存在关联数据时,禁止删除(默认行为)。
    sql
    CREATE TABLE order (order_id INT PRIMARY KEY,user_id INT,FOREIGN KEY (user_id) REFERENCES user(id) ON DELETE CASCADE
    );
     
  • 注意:MySQL 中仅 InnoDB 存储引擎支持外键,MyISAM 不支持;外键会增加性能开销,高并发场景可通过业务逻辑保障关联完整性。
3. 检查约束(CHECK)
  • 此前 MySQL 对 CHECK 仅语法支持但不生效,8.0.16 版本后正式强制执行:
    sql
    CREATE TABLE product (price DECIMAL(10,2) CHECK (price > 0), -- 价格必须大于0stock INT CHECK (stock >= 0) -- 库存不能为负
    );

三、约束的添加与修改

1. 新增表时添加约束
sql
CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT, -- 主键+自增name VARCHAR(50) NOT NULL, -- 非空phone VARCHAR(11) UNIQUE, -- 唯一grade INT DEFAULT 0, -- 默认值class_id INT,FOREIGN KEY (class_id) REFERENCES class(id), -- 外键score INT CHECK (score >= 0 AND score <= 100) -- 检查
);
 
2. 已有表添加约束
sql
-- 给student表添加唯一约束(手机号)
ALTER TABLE student ADD UNIQUE (phone);
-- 给student表添加外键约束
ALTER TABLE student ADD FOREIGN KEY (class_id) REFERENCES class(id);
 
3. 删除约束
sql
-- 删除主键约束
ALTER TABLE student DROP PRIMARY KEY;
-- 删除唯一约束(需先查约束名:SHOW INDEX FROM student;)
ALTER TABLE student DROP INDEX phone;
-- 删除外键约束(需先查约束名:SHOW CREATE TABLE student;)
ALTER TABLE student DROP FOREIGN KEY student_ibfk_1;
 

四、约束的使用原则

  1. 优先通过约束保障数据完整性,而非仅依赖业务代码(避免代码漏洞导致脏数据);
  2. 高并发场景适度简化约束(如去掉外键、仅保留核心主键 / 非空约束),平衡性能与数据规范;
  3. 主键尽量使用自增 INT/BIGINT(而非 UUID),减少索引碎片,提升查询效率;
  4. 唯一约束可搭配索引使用(MySQL 自动为唯一约束创建索引),提升查询速度。

五、常见问题

  • Q:主键和唯一约束的区别?
     
    A:主键非空且一张表仅一个,唯一约束可多个且允许一个 NULL;主键默认是聚簇索引,唯一约束默认是非聚簇索引。
  • Q:为什么不建议用外键?
     
    A:外键会增加表关联的性能开销,且容易导致死锁;分布式系统中,跨库外键无法生效,通常通过业务逻辑 + 定时校验保障数据关联。
http://www.jsqmd.com/news/78021/

相关文章:

  • 2025 年快速卷帘门厂家最新推荐榜,聚焦企业技术实力、产品品质与高效服务能力深度剖析 - 品牌鉴赏师
  • 四川工程监理公司排名前五,你绝对不能错过! - 百誉集团
  • 国内排名前五的AI文献综述工具,你绝对不能错过! - 百誉集团
  • AI搜索优化公司不知道怎么选?成都奇林智媒把流程摊开看,让你花钱明明白白 - 奇林智媒GEO
  • 基于MATLAB的RFID防碰撞算法仿真
  • 2025 年 12 月管道电预热工程厂家权威推荐榜:专业设备与高效施工,热力管道电预热工程一站式解决方案精选 - 品牌企业推荐师(官方)
  • 盘点2025年超纯水器/实验室超纯水器/国产超纯水器口碑好/性能好/质量好/品质好的生产企业 - 品牌推荐大师
  • 2025年二手发电机买卖回收权威推荐榜:专业甄选高性价比设备,提供一站式回收与交易服务 - 品牌企业推荐师(官方)
  • 2025 年 12 月冠晶石厂家权威推荐榜:外墙/内墙/防霉/水包水/水包砂/耐污/自洁冠晶石,甄选创新环保饰材品牌 - 品牌企业推荐师(官方)
  • 2025年智能体开发,Agent智能体,智能体数据生成公司推荐:数据精度与生成效率深度盘点 - 品牌鉴赏师
  • PC耐力板哪家可靠?2025优质耐力板厂家最新推荐榜单揭晓 - 深度智识库
  • 儿童补钙牛奶怎么选?我的“配方表筛选法”+ 旺旺低脂高钙牛乳测评笔记(偏家长视角) - AIEO
  • 阿联酋名义雇主EOR推荐:如何通过Safeguard Global人力资源服务商实现合规高效海外雇佣 - 品牌2025
  • 成都工程造价公司排名前五,你知道几家? - 百誉集团
  • 2025户外防水电气品牌TOP5口碑榜:CLIPOL涵维口碑 - mypinpai
  • 2025会计学专业TOP5高校推荐:线上资源与网络课程深度测 - mypinpai
  • 2025年湖南五大高性价比金刚砂地坪材料公司排行榜,专业金刚 - 工业推荐榜
  • 2025年五大口碑好的手表OEM生产厂家排行榜,看哪家服务好 - 工业品牌热点
  • 完整教程:【SpringBoot】33 核心功能 - 指标监控- 指标监控:Spring Boot Actuator 详解
  • 2025年五大高性价比的手表工厂排行榜,新测评精选手表厂家推 - myqiye
  • 2025 年知识库部署服务商全攻略:AI 知识库部署方案商企业私有化部署服务通俗指南与能力测评 - 品牌2026
  • 排名前10的AI文献综述工具,选对了效率翻倍! - 百誉集团
  • 出海企业如何实现合规高效全球雇佣?Safeguard Global名义雇主EOR提供一站式解决方案 - 品牌2025
  • 2025 年 12 月江苏压铸厂家权威推荐榜:铝合金压铸件、锌合金压铸件,精密工艺与稳定交付实力解析 - 品牌企业推荐师(官方)
  • 2025年湖南防静电地坪材料与水性环氧地坪材料公司推荐 - myqiye
  • 2025年稳压器制造商权威推荐榜单:家用稳压器/电梯稳压器/机床稳压器源头厂家精选 - 品牌推荐官
  • 出海企业必看:2025 海外人力资源公司选择指南,国际 EOR 服务商优势分析 - 品牌2025
  • zz llamaindex和langchain使用对比
  • 专业沙特阿拉伯名义雇主EOR服务商推荐:Safeguard Global助力企业合规高效开拓中东市场 - 品牌2025
  • python中CSV模块详解