

新闻资讯
技术学院MySQL数值类型分整数、浮点数、定点数三类:整数按字节选型(TINYINT至BIGINT),浮点数(FLOAT/DOUBLE)有精度误差,金额等必须用DECIMAL(M,D)保证精确。
MySQL中的数值类型主要分为三类:整数类型、浮点数类型和定点数类型。选对类型不仅影响存储空间和查询效率,更直接关系到计算是否准确——尤其是金额、计数、状态等关键字段。
整数类型以字节为单位划分容量,支持有符号(默认)和无符号(UNSIGNED)两种模式,后者可将负数范围转为正数扩展:
注意:INT(11) 中的 11 仅影响显示宽度(如配合 ZEROFILL),不改变存储空间或取值范围。
FLOAT 和 DOUBLE 采用二进制浮点表示,存在固有精度误差,适用于科学计算、日志指标等允许微小偏差的场景:
例如:SELECT 0.1 + 0.2 = 0.3 在 FLOAT/DIMPLE 中可能返回 FALSE,因底层二进制无法精确表达十进制小数。
DECIMAL(M,D) 是定点数类型,以字符串方式存储,保证十进制精度:
DECIMAL(18,2) 可存最大 9999999999999999.99
还有几个易被忽略但实用的类型:
:存储位字段,M=1~64;适合权限掩码、开关集合(如用户角色位图)TINYINT(1);建议显式写 TINYINT(1) UNSIGNED 并加注释说明用途BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE 的别名,常用于超大规模表主键不复杂但容易忽略:整数溢出时 MySQL 默认截断并警告(SQL mode 非严格下),线上务必开启严格模式(STRICT_TRANS_TABLES)让越界操作直接报错。