mysql中的数值类型有哪些_mysql数值类型基础说明
#技术教程 发布时间: 2025-12-19
MySQL数值类型分整数、浮点数、定点数三类:整数按字节选型(TINYINT至BIGINT),浮点数(FLOAT/DOUBLE)有精度误差,金额等必须用DECIMAL(M,D)保证精确。
MySQL中的数值类型主要分为三类:整数类型、浮点数类型和定点数类型。选对类型不仅影响存储空间和查询效率,更直接关系到计算是否准确——尤其是金额、计数、状态等关键字段。
整数类型:按需选择字节大小
整数类型以字节为单位划分容量,支持有符号(默认)和无符号(UNSIGNED)两种模式,后者可将负数范围转为正数扩展:
- TINYINT(1字节):有符号 -128~127,无符号 0~255;适合性别、状态码、省份编码等小范围枚举值
- SMALLINT(2字节):-32768~32767 / 0~65535;可用于订单状态、评分等级
- MEDIUMINT(3字节):-8388608~8388607 / 0~16777215;中小规模ID或日活计数
- INT(4字节):-2147483648~2147483647 / 0~4294967295;通用主键、用户ID、访问量统计
- BIGINT(8字节):超大范围,推荐用于高并发系统中的自增主键(如电商订单号、消息ID),避免21亿上限瓶颈
注意:INT(11) 中的 11 仅影响显示宽度(如配合 ZEROFILL),不改变存储空间或取值范围。
浮点数类型:适合近似计算,慎用于金额
FLOAT 和 DOUBLE 采用二进制浮点表示,存在固有精度误差,适用于科学计算、日志指标等允许微小偏差的场景:
- FLOAT(4字节):单精度,约7位有效数字;一般不推荐在业务核心字段使用
- DOUBLE(8字节):双精度,约15位有效数字;比 FLOAT 更稳定,但仍非精确类型
例如:SELECT 0.1 + 0.2 = 0.3 在 FLOAT/DIMPLE 中可能返回 FALSE,因底层二进制无法精确表达十进制小数。
DECIMAL:金融与精确运算的唯一可靠选择
DECIMAL(M,D) 是定点数类型,以字符串方式存储,保证十进制精度:
- M 表示总位数(精度),D 表示小数位数;例如
DECIMAL(18,2)可存最大9999999999999999.99 - 存储空间随 M 和 D 增长而增加,但换来的是加减乘除零误差
- 所有涉及货币、余额、库存扣减、分账比例等必须用 DECIMAL,不可妥协
其他数值相关类型
还有几个易被忽略但实用的类型:
-
BIT(M)
:存储位字段,M=1~64;适合权限掩码、开关集合(如用户角色位图) -
BOOLEAN / BOOL:MySQL 的别名,实际映射为
TINYINT(1);建议显式写TINYINT(1) UNSIGNED并加注释说明用途 -
SERIAL:是
BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名,常用于超大规模表主键
不复杂但容易忽略:整数溢出时 MySQL 默认截断并警告(SQL mode 非严格下),线上务必开启严格模式(STRICT_TRANS_TABLES)让越界操作直接报错。
上一篇 : Android编程实现自定义ProgressBar样式示例(背景色及一级、二级进度条颜色)
下一篇 : ooppo手机官网入口_OPPO官方手机官方网站首页地址
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!
:存储位字段,M=1~64;适合权限掩码、开关集合(如用户角色位图)