mysql bigint 128位_Mysql中int、bigint、smallint 和 tinyint的范围

最近在看mysql优化视频及各方帖子,其中有建议为字段选取合适的整型类型,在看int、bigint、smallint 和 tinyint的选取的时候有点迷惑,刚刚弄清楚,这里分享一下

这里先得说下基础知识,1字节(Byte)占8个位(bit),1个位表示一个二进制的0或者1,

1个字节能表示最大的整数是255,怎么来的?

1个字节就是8个二进制的1  “11111111” 转换成十进制就是255

int类型占4个字节,就是4*8=32位,能表示最大的整数是多少?

11111111 11111111 111111111 11111111

转换为十进制就是4294967295 ,不信你自己在表里面某int类型的字段里面手动写入一                个4294967296,保存完了再打开又给你退回到4294967295了。

然后我们引申出另一个词:符号。

带符号的int类型,表示的范围是-2147483648到2147483647(在这个范围里面能表示4294967295个  数字),不带符号的int类型范围是0到4294967295,带不带符号其实int能表示的数字的"宽度"不        变,只不过带符号就是用0做为中分点。

下面就能举一反三了

mediumint占3个字节 ,"宽度"为16777215 ,带符号的以0做为正负中分点

smallint占2个字节,"宽度"为65535

tinyint 占1个字节  "宽度"255

明白这个我们在以后的数据库设计中就能更合理的为字段选取整型类型了,比如在商城系统的订单表里,为该表的主键应该选什么合适?我觉得mediumint就够了,在ecshop里面,订单表和商品表这两个算是比较大的表了,其主键用的类型是mediumint。还有一些项目里面会用到数据字典,或者说是类型表,这里面的数据肯定不会太多的时候,用tinyint足矣

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值