在数据库设计中,数据类型是基石。选错类型不仅浪费存储空间,还可能导致精度丢失甚至查询错误。作为开发者,我们需要深入理解每种类型的特性。
常见数据类型概览
MySQL 支持多种数据类型,主要分为数值、字符串、日期时间和特殊类型。下图展示了整体分类架构:

数值类型详解
数值类型用于存储数字,分为整数和浮点数。
整数与位类型
整数类型包括 TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 等。 关于 bit 类型,它主要用于存储二进制位信息,实际使用时较少见,通常用 tinyint(1) 代替布尔值。

浮点类型 float
float(m,d)[UNSIGNED] 中,M 指显示长度,D 指小数位数,占用 4 字节。
例如 float(4,2) 范围是 -99.99 到 99.99,MySQL 会进行四舍五入。
注意: float 是近似值存储,存在精度问题。

定点数 decimal
decimal(m,d)[UNSIGNED] 是定点数,m 为总长度,d 为小数位数。
decimal(5,2) 范围 -999.99 到 999.99;加上 unsigned 则为 0 到 999.99。
虽然 float 和 decimal 看起来相似,但精度完全不同。float 有效精度约 7 位,而 decimal 整数位最大可达 65,小数位最大 30。若省略 d 默认为 0,省略 m 默认为 10。
经验之谈: 涉及金额计算时,强烈建议使用 decimal,避免浮点数运算带来的误差。
字符串类型对比
Char 类型
char(L) 是固定长度字符串,L 为字符数,最大 255。
无论实际存入多少字符,都会占用 L 个字符的空间(不足补空格)。








