首页/数据/SQL 速查/默认值、显式 NULL 与 DEFAULT 关键字
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条
变更与事务52 条
性能与执行计划72 条

默认值、显式 NULL 与 DEFAULT 关键字

省略列取默认值,显式 NULL 存空值:两者语义不同;需要强制取默认值时用 DEFAULT 关键字。

SQL 速查数据更新于 2026-10-12

示例

示例
-- 省略列:取默认值
INSERT INTO t (name) VALUES ('x');

-- 显式 NULL:若列可空则存 NULL(覆盖默认值)
INSERT INTO t (name, status) VALUES ('y', NULL);

-- 强制默认:MySQL 与 PostgreSQL 都支持在 VALUES 里写 DEFAULT
INSERT INTO t (name, status) VALUES ('z', DEFAULT);
UPDATE t SET status = DEFAULT WHERE id = 1;
省略列应用列默认值;无默认值且 NOT NULL 时报错
写 NULL存 NULL,NOT NULL 列报错
DEFAULT在 VALUES / SET 中显式取默认值

易错点

  • ORM 把未赋值字段序列化成显式 NULL,会绕过数据库默认值;需要默认值时要在 SQL 层用 DEFAULT 或省略列
  • MySQL 严格模式(8.0 默认)下 NOT NULL 列写入 NULL 直接报错;老版本非严格模式会写入隐式默认值,行为完全不同

数据来源与参考

  • MySQL 8.0 Reference Manual · Data Type Default Values
  • PostgreSQL Documentation · INSERT
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌