MySQL 约束详解:非空、主键与外键的核心作用
表结构设计离不开约束(Constraint)。约束的本质是通过技术手段倒逼开发者插入正确的数据,从而保证数据库的准确性。在实际开发中,合理设置约束是保障数据完整性的最后一道防线。
一、非空约束 (NOT NULL)
字段默认允许为 NULL,但实际开发中我们更倾向于 NOT NULL。因为数据为空往往无法参与运算,且逻辑判断会变得复杂。
这里有个常见的误区:NULL 和 ''(空字符串)的区别。
- NULL:表示什么都没有,占位符,不参与计算。
- '':表示有值,只是内容为空。

二、默认值约束 (DEFAULT)
DEFAULT 约束类似于 C++ 中的默认参数。如果插入数据时未指定该字段,系统会自动填入默认值。
-- 示例:age 默认为 18
CREATE TABLE users (
id INT PRIMARY KEY,
age INT DEFAULT 18
);
注意一个细节:如果表中既没有设置 DEFAULT 也没有设置 NOT NULL,默认行为是 DEFAULT NULL。但如果设置了 NOT NULL,就不会再有 DEFAULT NULL 了。

三、列描述 (COMMENT)
给字段加注释,这跟代码里的注释一样重要,方便后续维护。









