mysql中default的使用

25次阅读

default用于设置列的默认值,插入时若未指定该列则自动填充;2. 支持 常量 、CURRENT_TIMESTAMP 等表达式(mysql 8.0+ 支持更复杂表达式);3. 可在 INSERT 或 UPDATE 中使用 DEFAULT 关键字强制应用默认值;4. TEXT/BLOB 类型不可设默认值,NOT NULL 列需谨慎处理以避免插入错误。

mysql 中 default 的使用

在 MySQL 中,DEFAULT 是一个非常实用的关键字,主要用于为表中的列设置默认值。当插入新记录时,如果没有显式地为某个字段提供值,MySQL 就会自动使用该列定义的默认值填充。合理使用 DEFAULT 能提高数据完整性、减少冗余代码,并简化插入操作。

1. 定义列的默认值

创建表时,可以通过 DEFAULT 指定某列的默认值。常见于 字符串、数字、时间等类型。

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,     username VARCHAR(50) NOT NULL,     status TINYINT DEFAULT 1,     created_at DATETIME DEFAULT CURRENT_TIMESTAMP );

说明:

  • status 默认值为 1,表示“启用”或“正常”状态。
  • created_at 使用 CURRENT_TIMESTAMP,自动记录插入时间。
  • 插入数据时不指定这些字段,MySQL 会自动填入默认值。

2. 插入数据时省略字段

如果某列有默认值,在 INSERT 语句中可以不包含该列,系统会自动使用默认值填充。

INSERT INTO users (username) VALUES ('alice');

结果:

  • id 自增
  • username 为 ‘alice’
  • status 为 1(默认)
  • created_at 为当前时间

3. 显式使用 DEFAULT 关键字插入

你也可以在 INSERT 或 UPDATE 中主动使用 DEFAULT 来强制使用默认值,而不是传入具体值。

mysql 中 default 的使用

百度文心百中

百度大模型语义搜索体验中心

mysql 中 default 的使用22

查看详情 mysql 中 default 的使用

INSERT INTO users (username, status) VALUES ('bob', DEFAULT);

这会让 status 使用其定义的默认值(1),即使你写了字段名。

更新时也适用:

UPDATE users SET status = DEFAULT WHERE username = 'alice';

4. 支持表达式的默认值(MySQL 8.0+)

从 MySQL 8.0 开始,支持更复杂的默认值表达式(需是常量表达式)。

CREATE TABLE logs (log_id INT PRIMARY KEY,     detail TEXT,     ts DATETIME DEFAULT (NOW() + INTERVAL 1 HOUR) );

注意:括号不能少,且表达式必须是无副作用的常量类操作。

5. 注意事项和限制

  • TEXT、BLOB 类型不能设置默认值(除非在特定模式下用生成列模拟)。
  • 每个列最多一个 DEFAULT 值。
  • DEFAULT 值不能依赖于其他行数据或非确定性函数以外的变量(如用户变量)。
  • 如果列定义了 NOT NULL 但没有 DEFAULT,且插入时未赋值,会报错。

基本上就这些。DEFAULT 的核心作用是让字段“有备无患”,减少应用层判断,提升 数据库 自动化 程度。

站长
版权声明:本站原创文章,由 站长 2025-10-25发表,共计1295字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources