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 文档。

相关推荐
程序员清风2 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
天衍四九-2 小时前
MySQL中如何定位慢查询?如果SQL语句执行很慢,如何分析和优化?
数据库·sql·mysql
尚久龙2 小时前
mysql-5.7.26-winx64的安装步骤
数据库·mysql
医疗信息化王工2 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
-SOLO-2 小时前
开发笔记-摸鱼输入法
笔记
实心儿儿2 小时前
MySQL 的安装
数据库·mysql·adb
程序员阿鹏4 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
疯狂打码的少年5 小时前
【计算机网络】TCP/IP协议族(四层体系结构,与OSI对比)
网络·笔记·tcp/ip·计算机网络
瀚高PG实验室5 小时前
使用pg_stat_statements抓取数据库TOP SQL
数据库·sql·postgresql·瀚高数据库
xqqxqxxq5 小时前
AI Agent学习:Agent协作工具技术笔记(李博杰《深入理解 AI Agent》4.6观后总结)
笔记·学习