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

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

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

路由之心发布于 2026/3/24更新于 2026/10/1587 浏览
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. 八、外键

更多推荐文章

查看全部
  • Ratel 斗地主服务器搭建与 cpolar 内网穿透配置
  • 米家 API 使用指南:智能家居设备控制
  • FLUX.1 文生图:ComfyUI 部署与 SDXL 风格实战指南
  • Ubuntu 下 Python 环境配置与实战开发指南
  • 二分查找算法详解与实战题解
  • YOLO26 实时目标检测:关键架构改进与性能基准测试
  • PyCharm 中 Copilot 插件 Claude 模型不可用问题修复
  • GitHub 国内镜像站汇总与加速配置指南
  • CTF 基础题型实战解析:LFI 与暴力破解脚本
  • GitHub 学生开发者认证全流程及常见问题排查
  • C++ string 类从原理到实战
  • AI 外呼系统智能化流程解析:技术实现与业务应用
  • SpringBoot3+Vue3 大事件项目前端代码优化与功能增强
  • DeepSeek、Kimi 等 5 款网文 AI 写作工具实测与工作流解析
  • OpenClaw WebUI 空白页及 Not Found 问题修复
  • Spring AI ChatModel 核心概念与使用示例
  • 19 个合法的黑客技术在线练习平台推荐
  • Linux 上部署 IgH EtherCAT 主站指南
  • 分库分表避坑指南:垂直分库与水平分表策略及实战
  • 力扣热题 100 精选解题思路与代码实现

相关免费在线工具

  • 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