MySQL 常用 DEFAULT 默认值一览表

⚠️ 注意:CURRENT_TIMESTAMP 不要加引号 ,写成 DEFAULT CURRENT_TIMESTAMP,写成 'CURRENT_TIMESTAMP' 会当成普通字符串,不是时间函数。

MySQL5.6.5+ 才支持 DATETIME 使用 CURRENT_TIMESTAMP;MySQL8.0 支持表达式默认值(需要包括号 DEFAULT (xxx))

一、时间类系统默认值(你重点关心的)

默认值写法 适用字段类型 说明 示例
CURRENT_TIMESTAMP TIMESTAMP / DATETIME 当前时间戳(日期+时分秒),插入时自动赋值 created_at DATETIME DEFAULT CURRENT_TIMESTAMP
CURRENT_TIMESTAMP(n) TIMESTAMP(n) / DATETIME(n) 带微秒,n=0~6 dt DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3)
CURRENT_DATE DATE 当前日期(只有年月日),MySQL8.0+支持 ct_date DATE DEFAULT (CURRENT_DATE)
CURRENT_TIME TIME 当前时间(时分秒),MySQL8.0+支持 t TIME DEFAULT (CURRENT_TIME)
ON UPDATE CURRENT_TIMESTAMP TIMESTAMP / DATETIME 不是DEFAULT,是附加属性:该行其他字段更新时,自动刷新为本字段时间 updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

❗ 坑:NOW() / SYSDATE() 不能直接放在 DEFAULT 里 (MySQL5.7不支持,8.0可以写 DEFAULT (NOW()),但推荐统一用 CURRENT_TIMESTAMP)

二、常量默认值(所有版本通用)

默认值 适用类型 说明
NULL 任意允许NULL字段 默认空,col VARCHAR(20) DEFAULT NULL
''(空字符串) CHAR/VARCHAR/TEXT 字符串空值
0 TINYINT/INT/BIGINT/FLOAT 数字默认0
1 / -1 / 99 数值型 自定义固定数字
'固定字符串' VARCHAR/CHAR 固定文本,如 'unknown'
'0000-00-00' DATE DATE零值(sql_mode严格模式下不推荐)
'0000-00-00 00:00:00' DATETIME/TIMESTAMP 时间零值(严格模式报错)

三、MySQL8.0+ 支持【表达式默认值】(必须带括号)

默认表达式 字段类型 说明
DEFAULT (UUID()) CHAR/VARCHAR 默认生成UUID字符串
DEFAULT (UUID_TO_BIN(UUID())) BINARY(16) UUID转二进制存储
DEFAULT (RAND()) FLOAT 默认随机数0~1
DEFAULT (JSON_ARRAY()) JSON 默认空json数组
DEFAULT (CURRENT_DATE + INTERVAL 1 DAY) DATE 默认明天日期

四、各类型隐式默认值(不写DEFAULT时自动自带)

字段类型 不写DEFAULT的隐式默认值
INT/TINYINT/BIGINT 0(NOT NULL);NULL(允许NULL)
VARCHAR/CHAR ''(NOT NULL);NULL(允许NULL)
DATE 0000-00-00(NOT NULL);NULL
DATETIME 0000-00-00 00:00:00(NOT NULL);NULL
TIMESTAMP 受 explicit_defaults_for_timestamp 参数影响

常用建表示例

sql 复制代码
CREATE TABLE test(
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(32) DEFAULT '',
  status TINYINT DEFAULT 1,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  create_date DATE DEFAULT (CURRENT_DATE),
  uuid_col CHAR(36) DEFAULT (UUID())
);
相关推荐
Thanks_ks7 分钟前
SQL 的 GROUP BY 与聚合函数:从会写 SELECT 到会做统计
数据库·sql·mysql·group by·数据统计·聚合函数·having
Decay__8 小时前
12_MySQL InnoDB 内存与锁调优 —— Buffer Pool、redo log、隔离级别与锁等待
运维·数据库·sql·mysql·架构
苏宸啊13 小时前
MySQL(一)
数据库·mysql
2603_9696948513 小时前
JDBC 基础学习笔记:API 核心原理解析与 CRUD 代码实操
数据库·笔记·mysql·学习方法·database·sql注入
这个DBA有点耶13 小时前
库内语义构建 vs 外挂向量库:业务语义缺失,才是RAG“胡说八道”的根源
数据库·mysql·aigc
kobe_OKOK_15 小时前
mysql 开启 binlog 日志
数据库·mysql
这个DBA有点耶16 小时前
MySQL 8.0直方图:统计信息升级了,执行计划为什么还是选错?
数据库·mysql·代码规范
aiks_yuan20 小时前
MySQL 深分页 LIMIT 越翻越慢怎么办:300 万行实测 OFFSET、延迟关联和 keyset 的耗时差距(MySQL 8.2)
mysql
Decay__21 小时前
14_MySQL 高可用与容灾架构 —— MGR / InnoDB Cluster / Keepalived+VIP / 双主 / 读写分离 / 两地三中心
运维·数据库·sql·mysql·架构
Thanks_ks1 天前
MySQL 的索引是什么?用图书馆的目录讲明白
数据库·sql·mysql·索引·联合索引·explain·慢查询优化