MySQL 数据类型笔记

MySQL 的字段数据类型分为三大类:数值类型、字符串类型、日期类型。合理选择数据类型可以节省存储空间、提升查询效率。

一、数值类型

分为整数、浮点数、定点数。日常开发重点掌握 tinyint、int、bigint、decimal。

类型 占用空间 取值范围 使用说明
tinyint 1 byte 有符号:-128 ~ 127 无符号:0 ~ 255 特小型整数,适合年龄、状态标记
smallint 2 byte 有符号:-32768 ~ 32767 无符号:0 ~ 65535 小型整数,使用较少
mediumint 3 byte 有符号:−231-2^{31}−231 ~ 231−12^{31}-1231−1 无符号:0 ~ 232−12^{32}-1232−1 中型整数,项目极少使用
int / integer 4 byte 有符号:-2147483648 ~ 2147483647 最常用标准整数,普通主键、编号优先选择
bigint 8 byte 超大范围整数 高并发业务主键、雪花id必备
float 4 byte 单精度浮点数 存在精度丢失,禁止用于金额计算
double 8 byte 双精度浮点数 依然存在精度丢失,禁止用于金额计算
decimal 可变长度 自定义精度 定点数,财务、金额强制使用 示例 decimal(10,2):一共10位数字,小数占2位

重点提醒:涉及货币金额,绝对不能使用 float / double,统一使用 decimal!

二、字符串类型

重点区分 char 和 varchar;blob系列、超长文本类型简单了解即可。

类型 最大长度 说明
char(n) 0~255 字符 定长字符串 存储不足n位时自动补空格;查询速度快。适合长度固定数据:手机号、身份证
varchar(n) 0~65535 字节 可变长度字符串(日常最常用) 占用空间随实际内容变化,节约存储。适合姓名、地址
tinyblob / blob / mediumblob / longblob - 二进制字符串,用来存储文件二进制,开发不推荐数据库存文件
tinytext / text / mediumtext / longtext - 长文本,适合文章、大量备注内容;尽量避免大量使用

核心区别总结

char:定长,查询快,浪费空间;

varchar:变长,节省空间,查询略慢;

短且固定长度的数据选用 char,长短不固定文本选用 varchar。

三、日期类型

类型 展示格式 说明
date 2026-08-01 只保存年月日
time 15:30:00 只保存时分秒,极少单独使用
year 2026 仅保存年份,使用场景有限
datetime 2026-08-01 15:30:00 主流时间类型,保存年月日时分秒,不受时区影响
timestamp 2026-08-01 15:30:00 时间戳,受时区影响,存在时间范围限制,新项目优先 datetime

开发建议:不要使用字符串存储时间!时间范围筛选、时间函数运算无法高效执行。创建时间字段推荐:datetime default current_timestamp

四、选型简单总结

  1. 整数:状态用 tinyint;普通id用 int;分布式id、超大序号使用 bigint
  2. 小数金额:必须 decimal,拒绝 float、double
  3. 字符串:固定长度选 char;长短不定选 varchar;超大段文本使用 text
  4. 时间:优先 datetime,不推荐 timestamp、不使用字符串存储日期

如果你需要,我可以把这份笔记和之前 DDL 的笔记合并成一份完整 SQL 文档。

相关推荐
做运维的阿瑞1 小时前
mysql数据库分组查询:GROUP BY 与 HAVING 的执行逻辑
数据库·sql·mysql
M78佐菲1 小时前
ARM学习笔记(9)
linux·arm开发·笔记·嵌入式硬件·学习
LaughingZhu1 小时前
Product Hunt 每日热榜 | 2026-10-01
数据库·人工智能·深度学习·神经网络·搜索引擎
阳光九叶草LXGZXJ1 小时前
达梦数据库-学习-67-SSL加密认证
linux·运维·数据库·sql·学习·ssl
ha_lydms1 小时前
MaxCompute中JSON函数
大数据·数据库·阿里云·json·dataworks·maxcompute·odps
東隅已逝,桑榆非晚1 小时前
priority_queue的介绍和使用
c++·经验分享·笔记·学习
驭渊的小故事1 小时前
MyBatis 入门:从 JDBC 到优雅操作数据库(一)
笔记·sql·spring
沐欣工作室_lvyiyi2 小时前
基于物联网的智能商业零售管理系统设计与实现(论文+源码)
物联网·mysql·mysql数据库·零售
细嗅蔷薇@2 小时前
DML常见操作
数据库·mysql
lusklusklusk2 小时前
Oracle数据库基础之7_备份恢复基础之SCN
数据库·oracle