mysql 整型、浮点型数据类型的范围

mysql 整型、浮点型数据类型的范围,第1张

数据类型         字节数            范围                      无符号范围

TINYINT           1字节         -128~127                    0~255

FLOAT               4字节

DOUBLE           8字节

DECIMAL         8字节

CHAR                  M个字节 0<=M<=255

VARCHAR         l+1个字节  l<=M 0<=M<=255

如果超出数据的范围 会产生截断  超出最小值则按照最小值   超出最大值则按照最大值

显示长度与数据的宽度是没有关系的

测试浮点型

            float,double的数据类型会自动根据需要显示的数据长度进行四舍五入

测试字符串类型

CHAR的效率高于VARCHAR   CHAR是拿空间换取时间  VARCHAR是拿时间换取空间

CHAR默认存储数据的时候,后面会用空格填充到指定长度,而在检索的时候去掉后面的空格VARCHAR存储的时候不进行填充,尾部的空格会留下

TEXT相关的列不能有默认值,检索的时候不存在大小写转换

测试ENUM/SET类型

测试集合

测试日期时间类型

TIME     [D]   HH:MM:SS       D表示天数0~34

       例子:2   3:34:30      =》2*24+3:34:30

测试DATE类型

DATE    YYYY-MM-DD   /YYYYMMDD

测试DATETIME

测试TIMESTAMP

测试YEAR

Mysql 建表过程中:

MySQL中int类型占用4个字节[byte(B)],1B有8个位[bit(b)],一个位(b)就代表一个0或者1,那么MySQL中int占用4B,对应位就是 4*8b = 32b 了,也就是说 int 表示的数字 个数 是: 2的32次方。

因为字节分有符号和无符号两种,于是 int 有符号 的 范围就是 -2的31次方 到 2的31次方减去1 [?1 为什么不是32次方?] [?2 为什么要减去1?],即 -2147483648 ~ 2147483647; int 无符号(unsigned) 的 范围就是 0 到 2的32次方减去1。

知道了 int 类型的范围后,我们再来看看长度是什么意思。 在MySQL手册中,字段类型的长度用 “M” 表示,表示最大显示宽度。 int 的 最大有效显示宽度是 255。 注意: 此处表示 显示宽度 和 存储大小或类型及范围 无关

参考:

1、 https://blog.csdn.net/weixin_33695082/article/details/92011222

线上出了一个bug:参与集福气活动的很多玩家奖励少发了。

要补发给玩家的奖励可以通过表A和奖励发放表计算得出(需要补发的奖励 = 表A - 实际奖励发放表)。

现在的做法是写个job把这份补发奖励的名单拉取来(没错不等关服维护了,直接在线跑job)。这里要强调一点:只有在“实际奖励发放表”存在的玩家才有可能需要补发奖励。

第三个方法是我用来凑数的,请各位千万不要这么做。除非实际奖励发放表中玩家人数只有个位数。那到底是用第一个还是第二个呢?这个问题主要看两点:

采用方法二:范围查询的方式把数据加到内存中然后再筛选

需要查询的MySQL数据很多(玩家名单list有几万个),使用范围查找能加快查询速度并且即使将表A的数据全部加载在内存中job服务器也是没有压力。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7427918.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存