MySQL 数字类型的思考

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

1. 整数类型:

类型 存储 正负数范围 全正数范围 全正长度 备注
tinyint 1字节 -128~127 0~255 3
smallint 2字节 -32768~32767 0~65535 5
mediumint 3字节 -8388608~8388607 0~16777215 8 可用于邮编号
int 4字节 -2147483648~2147483647 0~4294967295 10 可用拼接1的方式存手机号
bigint 8个字节 ±9223372036854775808-1 18------- 20位 可存储手机号

注意:
1.在类型后面加unsigned,可向服务器声明全正数。可使正数最大值x2
一般喜欢使用int作为主键类型,若在表定义时加上int unsigned。可使主键范围扩到原来的两倍,不用担心主键值用尽的尴尬情况
2.手机号可以用int也可以用bigint。但即使是bigint也比varchar(11)占用更少的空间,从而在这一点上性能更高。
3.但是:任何数字列与unsigned定义的列进行计算后,若出现负数结果,则会返回 UNSIGNED的最大值。这个问题是继承C语言的。若考虑到会产生列与列直接的计算,需要避免UNSIGNED的定义。只在主键列上UNSIGNED设置即可,因为主键列一般设置为业务无关自增列。
4.留空

2.数值型(DEMICAL,NUMERIC)
DEMICAL,NUMERIC都是用来存储精确的数值,一般金额使用这个参数,DEMICAL是基本类型,NUMERIC按DEMICAL进行计算。DEMICAL按照二进制的格式存储 
例如:我们公司使用DEMICAL(18,4)来存储金额数值
小数位为4位,整数位位18-4=14位
DEMICAL(0),无法存数据,DEMICAL(X)不指定小数位数时,默认为0,理论上DEMICAL最长可以容纳65位数字

3.位值型(bit)
用于存储位值,最长可达64位,mysql命令行客户端无法查看位值数据。导出时也可能显示乱码,不要担心。
应用:bit(1) 用于判断是否
bit(32) 用于存储IP地址,只占4字节,应该是最省空间的选择
例如:bit(6) 存入 b'101',其实是按照00101来存储,不足的会在左边补零,读取出来视不同客户端也会补零
4.浮点类型
float与double
其小数点位数和总位数的关系与DEMICAL相似。浮点类型的数值是不精确的,需要精确计算的数值不建议设置为浮点型
例如:float(7,4) 存入9999.00009,小数位超出1位,其他的类型都会报错,
但是浮点型会自动四舍五入,再次取出后就会变成999.0001


 本文转自 angry_frog 51CTO博客,原文链接:http://blog.51cto.com/l0vesql/2046544


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
21天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
37 8
|
2月前
|
关系型数据库 MySQL
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
这篇文章介绍了如何在DBeaver中创建MySQL表的枚举(ENUM)字段,并探讨了MySQL中ENUM类型的一些行为特点,例如ENUM值的默认排序和在插入重复值时的表现。
53 1
用dbeaver创建一个enum类型,并讲述一部分,mysql的enum类型的知识
|
1月前
|
关系型数据库 MySQL Java
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
27 0
|
6月前
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之需要将mysql 表(有longtext类型字段) 迁移到odps,但odps好像没有对应的类型支持,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
147 4
|
7月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之在处理MySQL的DECIMAL类型时出现了报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
3月前
|
自然语言处理 算法 Java
Java如何判断两句话的相似度类型MySQL的match
【9月更文挑战第1天】Java如何判断两句话的相似度类型MySQL的match
27 2
|
4月前
|
存储 关系型数据库 MySQL
MySQL bit类型增加索引后查询结果不正确案例浅析
【8月更文挑战第17天】在MySQL中,`BIT`类型字段在添加索引后可能出现查询结果异常。表现为查询结果与预期不符,如返回错误记录或遗漏部分数据。原因包括索引使用不当、数据存储及比较问题,以及索引创建时未充分考虑`BIT`特性。解决方法涉及正确运用索引、理解`BIT`的存储和比较机制,以及合理创建索引以覆盖各种查询条件。通过`EXPLAIN`分析执行计划可帮助诊断和优化查询。
|
4月前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
4月前
|
关系型数据库 MySQL 数据管理
深入解析 MySQL 中的关系类型
【8月更文挑战第31天】
62 0