闲谈MySQL中int(10)和int(11)的区别?

mysql中int类型占用4个字节,而一个字节占用8个比特位,所以一个int类型的字段会占用2的32次方,我们就能换算出int UNSIGNED(无符号)类型的能存储的最小值为0, 最大值为4294967295;有符号的时候存储是从-2147483647,到2147483647;由此可以发现,正好是10位的长度;所以int默认的长度就是10,但是最大的存储长度也是10。

接下来说int10和int11的区别

首先新建一个表test,表中有三个字段id,id1(10),id2(11)(id 假装是一个主键,可以忽略它)
在这里插入图片描述
在命令窗口执行命令 alter table test modify id2 int(12) zerofill;(如果int中不加具体的数值,则默认是10)

注:不能用navicat查看结果,navicat是自动过滤前面的0;

添加一条数据(1,1,1);
结果如下
在这里插入图片描述

可见宽度是不一样的,id1是10位,id2是是12位。
再来试一下如果插入超过10位的开头大于0的数值,看看结果

在这里插入图片描述

可见超出范围,原因就是开头说的最大值不能超过4294967295;

总结:
mysql中int(M)类型的字段最多可以存放10位长度的字段,但是如果小于最大值(4294967295)的情况下,前面用0补全(前提是该字段设置了zerofill属性),比如12345,那么int(11)则展示的是00000012345,比如12345678912,这种就不能存放了,原因是超过了最大值;M表示的是宽度,M最大是255;所以int10 和int11 的区别就是宽度不一致,设置字段的显示宽度并不限制字段存储值的范围,比如字段d设置为int(5),但是仍然可以存储1234567890这个10位数字;

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值