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个字节占8个比特位,比如tinyint(1),就是2的8次方=256,有符号他的范围是-128128-1(-1是因为0属于有符号),无符号范围是0256-1
- tinyint(1)、tinyint(4)占用的字节都是一样的,存储范围也是一样的
- tinyint(4),当设置了zerofill的时候,前边自动补0
- tinyint(4),当我们设置了zerofill的时候,插入数据1,只会显示001,3位,因为不管是有符号还是无符号,他的位数都是3位
- int(10)和int(11)同理,zerofill前边补0,需注意得是超出范围和溢出处理