MySQL 数据类型笔记

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

一、数值类型

分为整数、浮点数、定点数。日常开发重点掌握 tinyintintbigintdecimal

类型 占用空间 取值范围 使用说明
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!

二、字符串类型

重点区分 charvarchar;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 文档。

相关推荐
聚美智数9 小时前
图片水印-图片剪裁-图片缩放API接口介绍
java·服务器·数据库
JavaPub-rodert9 小时前
Go 后台如何同时兼容 MySQL、PostgreSQL、SQLite 和 SQL Server?从 ShiyuAdmin 看 GORM 多数据库适配
数据库·mysql·postgresql·golang·javapub·王仕宇
瀚高PG实验室9 小时前
SQL优化案例:存储过程、复杂SQL拆成简单SQL提升整体性能
数据库·sql·postgresql·瀚高数据库
Wang's Blog9 小时前
PostgreSQL笔记36:执行计划基础解读与优化器成本模型
数据库·笔记·postgresql
u01030552710 小时前
昇腾AI赋能安卓智能助手
人工智能·笔记
Wang's Blog10 小时前
PostgreSQL笔记35:索引常见问题诊断与解决方案全景解析
数据库·笔记·postgresql
LayZhangStrive10 小时前
后端通识 - 后端开发职位接触的开发流程
数据库·prd·技术方案·库表设计·后端开发流程
爱吃火鸡面呀10 小时前
MySQL 查询与函数详解:从基础条件筛选到高级字符处理
数据库·mysql
奥莱维10 小时前
KNX酒店方案_KNX专用线与高端酒店技术逻辑
java·服务器·前端·数据库
_Narcissus_11 小时前
枚举和模拟算法笔记
c语言·数据结构·c++·笔记·算法·模拟·枚举