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

在 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 来强制使用默认值,而不是传入具体值。
国洋商务通
Gyb2b V1.01免费版可终身使用,是一款功能强大的B2B电子商务应用软件。该软件不仅更新和修改了V1.0相关功能,更是采用了目前互联网上最流行的LAMP组合(Linux+Apache+Mysql+PHP)开发完成,模板技术实现了界面与代码的有效分离,用户可以快速地在此基础上编译模板;提供B2B电子商务应用最常见的求购、供应、商品、公司库、行业资讯、商圈、资信认证、在线交易、交易评分、留言、搜
0 查看详情
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 的核心作用是让字段“有备无患”,减少应用层判断,提升数据库自动化程度。
以上就是mysql中default的使用的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1051890.html
微信扫一扫
支付宝扫一扫