
一、数据类型概览
数据库设计的第一步,往往就是确定字段类型。选对了,查询快、存储省;选错了,轻则精度丢失,重则性能瓶颈。下面我们来梳理一下 MySQL 中常用的几大类。

二、数值类型
数值型是基础中的基础。除了常见的整数外,浮点数和定点数的区别尤其关键。

关于 bit 类型,这里有个细节要注意:它主要用于存储位值(如 true/false),但在实际业务中,除非对空间极度敏感,否则一般用 tinyint(1) 代替,兼容性更好。

三、浮点类型 float
float[(m, d)][unsigned]:M 指定显示长度,d 指定小数位数,底层固定占用 4 个字节。
举个例子,float(4,2) 表示的范围是 -99.99 到 99.99。MySQL 在保存时会进行四舍五入。但要注意,浮点数存在精度丢失的风险,比如 0.1 + 0.2 != 0.3 这种经典问题。


四、定点类型 decimal
decimal(m, d)[unsigned]:这是定点数,m 指定总长度,d 表示小数点后的位数。
decimal(5,2) 的范围是 -999.99 到 999.99,加上 unsigned 后则是 0 到 999.99。
虽然 float 和 decimal 看起来很像,但核心区别在于精度。float 的精度大约是 7 位有效数字,而 decimal 支持更高的精度控制。整数部分 m 最大可达 65,小数部分 d 最大 30。如果省略参数,默认 m=10, d=0。
涉及金额、财务数据时,务必使用 decimal,千万别用 float。











