跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
SQL

MySQL 数据库约束详解:非空、主键、外键等核心概念

MySQL 表约束机制通过非空、默认值、主键、自增、唯一键及外键等技术手段,确保数据完整性与准确性。非空约束防止字段为 NULL;默认值提供初始数据;主键唯一标识记录且不可为空;自增字段自动递增通常配合主键使用;唯一键允许重复但列值唯一;外键维护表间关系。合理设置约束可倒逼开发规范,减少脏数据产生。

路由之心发布于 2026/3/24更新于 2026/5/36 浏览
MySQL 数据库约束详解:非空、主键、外键等核心概念

表的约束用于保证数据库中数据的准确性,本质是通过技术手段强制程序员插入正确的数据。

一、非空约束

字段值默认为 NULL,实际开发中建议尽可能设置为 NOT NULL,因为空值无法参与运算。 NULL 表示什么都没有,'' 表示有值但为空字符串。

文章配图 文章配图

二、Default 约束

DEFAULT 类似于 C++ 的缺省值。若未设置 DEFAULT 和 NOT NULL,默认 DEFAULT NULL;若设置了 NOT NULL,则不会有 DEFAULT NULL。

文章配图 文章配图

三、Comment 列描述

列描述即注释,用于说明字段含义。

文章配图

四、ZeroFill 约束

INT(10) 配合 ZEROFILL 使用时,不足 10 位的数字会用 0 补充显示。

文章配图 文章配图

五、主键约束

主键(PRIMARY KEY)唯一约束字段数据,不能重复且不能为空。一张表只能有一个主键,通常为整数类型。 去除主键:

ALTER TABLE table_name DROP PRIMARY KEY;

添加主键:

ALTER TABLE table_name ADD PRIMARY KEY (column_name);

复合主键:多列共同组成主键,仅当这几列同时与过往数据相同时才产生冲突。

文章配图 文章配图 文章配图 文章配图 文章配图

六、Auto Increment 约束

AUTO_INCREMENT 字段在插入时不给值,系统会自动从当前最大值 +1 生成新值。通常与主键搭配作为逻辑主键。 特点:

  1. 必须是索引(Key 栏有值)。
  2. 必须是整数。
  3. 一张表最多只能有一个自增长字段。 自定义自增长值:
ALTER TABLE table_name AUTO_INCREMENT = value;

查看最后一次的插入自增长值:

SELECT LAST_INSERT_ID();

文章配图 文章配图 文章配图 文章配图 文章配图

七、唯一键

主键不能为空,唯一键可以为空(NULL 不参与计算)。一张表只能有一个主键,但可以有多个唯一键。

文章配图

八、外键

外键定义表与表之间的关系,主要定义在从表上。主表必须有主键或 UNIQUE 约束。定义外键后,外键列数据必须在主表的主键列存在或为 NULL。 创建外键示例:

ALTER TABLE child_table ADD CONSTRAINT fk_name FOREIGN KEY (child_col) REFERENCES parent_table(parent_col);

文章配图 文章配图 文章配图 文章配图 文章配图 文章配图 文章配图

目录

  1. 一、非空约束
  2. 二、Default 约束
  3. 三、Comment 列描述
  4. 四、ZeroFill 约束
  5. 五、主键约束
  6. 六、Auto Increment 约束
  7. 七、唯一键
  8. 八、外键
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • HarmonyOS6 RcList 组件核心架构与类型系统设计
  • Python 操作 Cookie 指南:爬虫与 Web 开发实战
  • xAI Grok 图像转视频模型评测与 API 接入指南
  • 基于 YOLOv8/v11/v26 的 Web 目标检测与人脸表情识别系统,Django+Vue3 前后端分离
  • OpenClaw:开源自托管 AI Agent 框架技术解析
  • Vue 事件修饰符
  • GitHub Copilot Token 消耗过快?5 个高效省流策略与模型替代
  • Cursor、Kiro 与 Google Antigravity 三款 AI 编程工具评测
  • Stable Diffusion WebUI Docker 部署实战指南
  • Flutter 三方库 shelf_modular 的鸿蒙化适配指南
  • 飞算 JavaAI:自然语言驱动的全流程 Java 智能开发实践
  • 基于 DeepFace 与 OpenCV 的实时情绪分析系统
  • Java 对象更新时避免空字段覆盖的几种拷贝方案
  • WinBtrfs 在 Windows 下读写 Linux Btrfs 分区指南
  • Python爬虫入门:阶段学习路线与技术要点
  • Opencode:自带沙箱的开源代码解释器,赋能 DeepSeek 本地编程
  • Java Spring 框架入门与 Maven 项目搭建实战
  • Fish Speech 1.5 镜像部署指南:集成 Xinference 与 WebUI
  • 小狼毫输入法配置指南:拼音、五笔、注音方案设置
  • Python NumPy 核心概念与实战应用

相关免费在线工具

  • 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