mysql整形取值范围_【MySQL】整数类型取值范围和使用

MySQL中有5个整数类型,他们的取值范围和占用储存空间很容易通过搜索得出结果,如图:b94d3fd0944ecca15ce441f7d5d00ac5.pngMySQL整数类型取值范围

比如tinyint占用1字节的空间,其有符号的取值范围是-128到128,无符号的范围是0到255。

1.取值范围怎么来的

最开始的时候我是看不懂这个表格的,为什么1个字节他的取值范围就是-128到128呢?经过查阅资料,因为计算机储存中的数据是由二进制的0和1组成的,每个0或者1都代表一个位(bit),1哥字节(B)等于8位。无符号时:最小值8位全是0,最大值8位全是1,转为对应十进制,就是0到255。有符号时:二进制用最左边的一位来表示正负,0为正,1为负,所以01111111就是127,而用补码的方式表示负数,即11111111就是-127,其中的-0被认为规定为-128,所以他的范围是图中的样子。其余的类型,对应的字节数乘8位,也可以计算出对应范围。

2.根据需求选择合适的类型

有时候,开发同学设计的表中,数值类型全部使用int,这会造成资源的浪费。如用户的性别,年龄,状态等字段,性别只有男女之分,年龄一般在0到100之间,状态的标识也不会超过几十上百,所以使用tinyint最为合适。

如果储存的数据中没有负数,则使用UNSIGNED无符号类型。

有时候需要储存IPv4地址,可以使用INT UNSIGNED类型,储存时使用MySQL函数INET_ATON()把IP转为数字,使用时用INET_ATON()把数字转为IP。

3.关于tinyint(2)

括号中的2表示的不是tinyint的最大长度,而是显示的最大长度。tinyint的最大值还是127没变(有符号),虽然已经超过2位了。这个2的作用需要在建表时指定ZEROFILL参数后,查询时才能体现出来。如果表中数据是1,则查出来的结果会自动用0补成两位,即01。这只是影响的查询结果,表中的数据还是1没变。所以平时指定括号中的数值并没有意义。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值