tinyint、int的区别

1.tinyint(1字节--4位【带符号】)

很小的整数。带符号的范围是-128到127。无符号的范围是0到255。

2.smallint(2字节--6位【带符号】)

小的整数。带符号的范围是-32768到32767。无符号的范围是0到65535。

3.mediumint(3字节--9位【带符号】)

中等大小的整数。带符号的范围是-8388608到8388607。无符号的范围是0到16777215。

4. int(4字节--11位【带符号】)

普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。

5.bigint(9字节--20位【带符号】)

大整数。带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。


注意:以前总是会误以为int(3)只能存储3个长度的数字,int(11)就会存储11个长度的数字,这是大错特错的。

  • tinyint(1) 和 tinyint(4) 中的1和4并不表示存储长度,只有字段指定zerofill是有用,
  • 如tinyint(4),如果实际值是2,如果列指定了zerofill,查询结果就是0002,左边用0来填充。

总结:

  1. 字节存储范围规则,1个字节占8个比特位,比如tinyint(1),就是2的8次方=256,有符号他的范围是-128128-1(-1是因为0属于有符号),无符号范围是0256-1
  2. tinyint(1)、tinyint(4)占用的字节都是一样的,存储范围也是一样的
  3. tinyint(4),当设置了zerofill的时候,前边自动补0
  4. tinyint(4),当我们设置了zerofill的时候,插入数据1,只会显示001,3位,因为不管是有符号还是无符号,他的位数都是3位
  5. int(10)和int(11)同理,zerofill前边补0,需注意得是超出范围和溢出处理
posted @ 2022-03-02 14:07  花花妹子。  阅读(4503)  评论(0编辑  收藏  举报