跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

MySQL 表约束详解:非空、主键与外键的作用

MySQL 表约束是保障数据完整性的核心机制。内容涵盖非空、默认值、注释、零填充、主键、自增、唯一键及外键等关键概念。重点解析主键与唯一键的区别,说明外键如何定义表间关系,并指出自增长字段需具备索引的前提条件。通过合理设置约束,可有效规范数据录入,防止脏数据产生,提升数据库设计质量。

DevStack发布于 2026/3/21更新于 2026/7/2732 浏览
MySQL 表约束详解:非空、主键与外键的作用

MySQL 表约束详解:非空、主键与外键的作用

表结构设计离不开约束。通过合理的约束机制,我们可以从技术层面倒逼数据录入的准确性,确保数据库中长期存储的数据是可信的。

一、非空约束 (NOT NULL)

字段值通常有两种状态:NULL(默认)和 NOT NULL(不为空)。虽然数据库允许字段默认为空,但在实际开发中,应尽可能避免关键字段为 NULL,因为空值往往无法参与正常的数值运算或逻辑判断。

这里需要区分 NULL 和空字符串 '':

  • NULL:表示'什么都没有',在数据库中是一个特殊的标记。
  • '':表示'有值,但是内容为空'。

文章配图 文章配图

二、Default 约束

DEFAULT 类似于 C++ 中的缺省参数值。当插入数据时未指定该字段的值,系统会自动填充预设的默认值。

文章配图

结合 NOT NULL 使用效果更佳:

文章配图

注意: 如果表中既没有设置 DEFAULT 也没有设置 NOT NULL,默认行为是允许 NULL。一旦设置了 NOT NULL,则不再隐含 DEFAULT NULL 的行为。

三、Comment 列描述

列描述本质上就是注释,用于说明字段的用途,方便后续维护。

文章配图

四、ZeroFill 约束

ZEROFILL 主要用于数字显示。单独使用 INT(10) 意义不大,但配合 ZEROFILL 后,不足位数的数字会用 0 补齐显示。

文章配图 文章配图

这相当于将 INT(10) 中的 10 定义为显示宽度,少于 10 位时自动补零。

五、主键约束 (PRIMARY KEY)

主键用于唯一标识表中的一行记录。它有两个核心特性:唯一性(不能重复)和非空性(不能为 NULL)。一张表中最多只能有一个主键,且通常由整数类型构成。

文章配图 文章配图

移除与添加主键: 文章配图 文章配图

复合主键: 主键不仅可以作用于单列,也可以作用于多列。当多列组合在一起作为主键时,只有这些列的值同时与已有数据完全一致,才会触发主键冲突。

文章配图

六、Auto Increment 约束

自增字段 (AUTO_INCREMENT) 在插入数据时,若未指定值,系统会自动基于当前最大值 +1 生成新值。它常与主键搭配使用,作为逻辑主键。

文章配图 文章配图

自增长的关键特点:

  1. 任何字段要做自增长,前提是该字段本身必须是索引(Key 列有值)。
  2. 自增长字段必须是整数类型。
  3. 一张表最多只能有一个自增长字段。

自定义自增长起始值: 文章配图 文章配图

查看最后一次的自增值: 文章配图

七、唯一键 (UNIQUE KEY)

主键不允许为空,而唯一键可以为 NULL。需要注意的是,NULL 不参与计算,因此唯一键允许多个 NULL 值存在。

文章配图

区别点: 一张表中只能有一个主键,但可以拥有多个唯一键。

八、外键 (FOREIGN KEY)

外键主要用于定义表与表之间的关系,特别是主表和从表的关联。例如,学生属于某个班级,这种归属关系可以通过外键来约束。

文章配图 文章配图

因为学生是从属于某个班级的,所以需要在学生表中建立指向班级表的外键:

文章配图 文章配图

创建外键示例: 文章配图 文章配图 文章配图

外键约束主要定义在从表上,主表必须包含主键或唯一键。定义外键后,要求从表的外键列数据必须在主表的主键列中存在,或者为 NULL。这保证了参照完整性,防止出现孤立的数据记录。

目录

  1. MySQL 表约束详解:非空、主键与外键的作用
  2. 一、非空约束 (NOT NULL)
  3. 二、Default 约束
  4. 三、Comment 列描述
  5. 四、ZeroFill 约束
  6. 五、主键约束 (PRIMARY KEY)
  7. 六、Auto Increment 约束
  8. 七、唯一键 (UNIQUE KEY)
  9. 八、外键 (FOREIGN KEY)
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • OpenAI 董事会解雇 CEO 山姆·奥特曼,微软确认继续合作
  • 大模型技术发展脉络与未来趋势深度解析
  • Spring Boot 微服务架构设计与实战
  • OpenClaw + cpolar:实现本地 AI 智能体的远程访问与内网穿透
  • 多模态大模型的实现原理与技术难点
  • 前端开发基础:HTML/CSS/JavaScript 核心与开发环境入门
  • DeepSeek 深度使用指南:提示词技巧与本地知识库搭建
  • GitHub Copilot Pro 学生认证与配置教程
  • 国内访问 GitHub 的几种加速方式实测
  • LightRAG:一种结合图结构与向量索引的高效 RAG 框架
  • Shannon:基于多智能体的自动化 Web 渗透测试工具
  • 前端高频面试题:TypeScript 篇
  • Spring AI 框架快速开发大模型项目指南
  • RAG 技术详解:检索增强生成原理与应用
  • AI 大模型通信机制:流式传输与数据封装逻辑
  • 为何推荐 Eclipse Temurin 作为首选 OpenJDK 发行版
  • Docker 部署 n8n:从零搭建私有 AI 工作流平台
  • 给年轻人的建议:专注搞钱不如专注提升核心竞争力
  • PromptIR: 基于提示学习的通用盲图像复原网络
  • AI 改变内容营销:生成式引擎优化(GEO)入门与实践

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online