MySQL 约束详解:非空、主键、外键与自增机制实战
表结构设计阶段,约束是保证数据准确性的核心手段。通过技术手段倒逼写入逻辑,确保入库数据的完整性。下面结合实战场景,梳理几种常用约束的本质区别与使用规范。
非空约束与空值语义
字段默认允许为 NULL,但实际开发中应尽量避免。因为 NULL 无法参与数值运算,且统计函数处理逻辑特殊。这里需要区分 NULL 和空字符串 '':
NULL:表示'没有值',即缺失。'':表示'有值',只是内容为空。

默认值与列描述
DEFAULT 类似于 C++ 中的缺省参数,当插入数据未指定该字段时生效。若同时设置 NOT NULL 和 DEFAULT,则必须提供默认值。

注意:若未显式设置 DEFAULT,系统默认为 NULL;一旦设定 NOT NULL,则不再隐含 DEFAULT NULL。此外,利用 COMMENT 添加列描述能显著提升后续维护效率,这等同于在代码层面增加注释。
零填充约束
ZEROFILL 仅对整数类型有意义。它会在显示不足指定位数时自动补零。例如 INT(10) 配合 ZEROFILL,输入 5 会显示为 0000000005。

主键约束
主键(Primary Key)用于唯一标识记录,具备不可重复、不可为空的特点。一张表只能有一个主键,通常由整数类型的列构成。

复合主键:支持多列联合作为主键。只有当所有主键列的值同时与现有数据相同时,才会触发冲突。






