MySQL 数据库数据类型选型避坑指南
概述
在数据库设计阶段,数据类型的选择往往被忽视,但一旦选错,轻则浪费存储空间,重则导致精度丢失或查询性能下降。作为开发者,我们需要对 MySQL 的核心类型有清晰的认知。

数值类型
基础整型与位类型
MySQL 支持多种整数类型,如 TINYINT、SMALLINT 等,具体选择取决于业务所需的数据范围。此外还有 BIT 类型,用于存储二进制位数据。

注意:BIT 类型在实际使用中较少见,通常用于标志位存储,需注意其显示格式。

Float 浮点型
Float 是单精度浮点数,占用 4 个字节。语法上可以指定显示长度 M 和小数位数 D,例如 float(4,2)。
但在实际应用中,浮点数存在精度问题。float(4,2) 的范围大约是 -99.99 到 99.99,MySQL 在保存时会进行四舍五入。由于底层二进制表示的限制,Float 的精度大约只有 7 位有效数字,不适合对精度要求极高的场景(如金额)。


Decimal 定点型
Decimal 用于存储精确的定点数,语法为 decimal(m,d)。M 代表总长度,D 代表小数位数。
例如 decimal(5,2) 的范围是 -999.99 到 999.99。如果是无符号 unsigned,则范围变为 0 到 999.99。相比 Float,Decimal 能提供更精确的存储,整数最大位数 m 可达 65,小数最大位数 d 为 30。如果省略参数,默认 m=10, d=0。
建议: 涉及金额、财务计算等对精度敏感的场景,务必使用 Decimal,避免 Float 带来的误差。
字符串类型
Char 定长字符串
Char(L) 是固定长度字符串,L 为字符长度,最大支持 255 个字符。无论实际存入多少内容,它都会占用分配的 L 个字符空间。











