上一篇
场景引入:
刚入职的小王正吭哧吭哧建表,突然卡壳了——"地址字段该用VARCHAR(255)
还是TEXT
?生日字段用DATE
还是DATETIME
?" 🤔 别急!这份MySQL数据类型速查指南,让你像老司机一样精准选型!
MySQL的数据类型主要分5大类,先混个脸熟:
整数系:
TINYINT
:迷你整数(-128~127)👉 适合年龄、状态码 INT
:大众情人(-21亿~21亿)👉 用户ID、订单号 BIGINT
:超级大数 👉 天文数字、雪花ID 小数系:
FLOAT
:会丢精度的浮点 👉 温度、地理坐标 DECIMAL(M,D)
:精确小数 👉 金额(比如DECIMAL(10,2)
表示8位整数+2位小数) CHAR(10)
:定长字符串 👉 固定长度的邮编(会补空格) VARCHAR(255)
:可变长度 👉 用户名、标题(省空间) TEXT
:大段文本 👉 商品详情、日志内容 ENUM('男','女')
:单选标签 👉 性别字段(比字符串省空间) DATE
:纯日期 👉 生日、入职日 DATETIME
:日期+时间 👉 订单创建时间 TIMESTAMP
:自动时区转换 👉 国际化系统的最后登录时间 BLOB
:二进制大对象 👉 图片、PDF文件(实际开发中更多存文件路径) JSON
:直接存结构化数据 👉 动态配置、API响应 -- 查看某张表的字段类型 DESC 表名; -- 查看建表语句(含完整类型定义) SHOW CREATE TABLE 表名;
逻辑速记: 数字?→ 有小数?→ 要精确?→ DECIMAL │→ 无小数?→ 范围小→ TINYINT 范围大→ BIGINT 文本?→ 长度固定?→ CHAR │→ 长度可变?→ 超255字符→ TEXT 否则→ VARCHAR 时间?→ 要时分秒?→ DATETIME 纯日期?→ DATE
VARCHAR
定义过长(如VARCHAR(5000)
)会自动转成TEXT
DATETIME
和TIMESTAMP
的时区处理不同(后者会转UTC时间) DECIMAL
ENUM
存未来可能变化的选项(如ENUM('A','B','C')
新增D需改表结构) 下次设计表时,记住这个口诀:
"数字看范围,文本看长短,时间选精度,特殊需求上JSON",多练几次DESC
命令,你也能成为数据类型活字典! 🚀
(注:本文基于MySQL 8.0特性整理,2025年8月验证可用)
本文由 书雯君 于2025-08-08发表在【云服务器提供商】,文中图片由(书雯君)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/566084.html
发表评论