Mysql:整型数据类型详解,其中有一个知识点是我们比较容易忽略的

在翻看老的数据表设计时,发现一个问题:数据表结构中存在 bigint(20) 类型的字段,但是 Java 中 Long 的最大值为 9223372036854775807,总共 19 位长度,那么问题来了,bigint(20) 的数据类型设计是否会造成 Java 类型的精度溢出问题?下面我们来分析一下这个问题,如有不正之处,欢迎批评指正。

Mysql 整型类型

数据格式:类型 [(M)] [UNSIGNED] [ZEROFILL]

TINYINT

M默认值为4

8位二进制数。
带符号数据范围:-128 到 127。
无符号数据范围:0到255。

SMALLINT

M默认值为6

16位二进制数。
带符号数据范围:-32768 到 32767。
无符号数据范围:0 到 65535。

MEDIUMINT

M默认值为9

24位二进制数。
带符号数据范围:-8388608 到 8388607。
无符号数据范围:0 到 16777215。

INT

M默认值为11

32位二进制数。
带符号数据范围:-2147483648 到 2147483647。
无符号数据范围:0 到 4294967295。

BIGINT

M默认值为20

64位二进制数。
带符号数据范围:-9223372036854775808 到 9223372036854775807。
无符号数据范围:0 到 18446744073709551615。

注意

我们进行数据表设计时,喜欢用 bigint(20)、int(10)、tinyint(2)之类的数据类型,类型后的数字并不表示数据存储长度,而是表示字段要显示的长度,只有在字段设置为 zerofill(以0填充)时,显示长度才会生效。

例如:
int(5):假如列的值为99,如果该列指定了 zerofill,则在查询结果中会显示为 00099。

其他类型

BIT[M]

bit位类型,M 表示 bit 的位数,范围从1到64,如果 M 被忽略,默认为1。

BOOLEAN

mysql 会将 BOOLEAN 类型转换为 TINYINT(4)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值