mysql int类型使用方法_Mysql int类型你了解多少

前两天和朋友闲聊,聊到了数据库设计相关的问题,朋友突然画风一转--为什么数据库里面int最大长度只能int(11),long最大长度只能bigint(20)?为什么int(4)可以存下999999?

我当时的回答有点含糊--int类型4字节,4*8=32bit,2^32-1是11位吧! int(*)里面的*并非数字的长度吧!(有点心虚qwq...)

事后想起了这件事,用计算器算了下2^ 32-1,结果居然是4294967295,只有十位啊??? 当时觉得应该是某个环节弄错了,肯定是(自信满满..) 突然注意到建表语句中的unsigned(无符号的)这个单词,恍然大悟,还有符号位(+/-),正好11位.

我比较在意的是后面一个问题,为什么int(4)可以存下999999,难道像varchar一样是一种可变长度的类型.我觉得问题不会这么简单,于是借助强大的浏览器搜索了一下,终于弄明白了到底是怎么回事.

这里我把查到的资料整理一下

38d97dcb5a49f789f5ca545b943e5a3b.png

从上图可以看出来:sql每种整形类型的取值范围及最大长度

另外,int(*)都可以存储上述范围的数字,也就是说int(1)和int(11)都能存储上述范围内的数字.(注意有无符号范围不一样)

具体的区别就是,用int(11)存储32,数据库会在前面补满0.要查看出不同效果可以在创建类型的时候加 zerofill这个值,表示用0填充,否则看不出效果的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值