Mysql的int(10)与int(11)的区别
对于int类型来说,当定义为无符号int时,最大取值范围是4294967295,数一下长度也就10位,那么难道我们定义int(11)的时候,可以突破int类型的取值上限了吗?
另外有些细心的朋友可能会发现,我们在创建表时,如果没有指定int类型的length,MySQL会自动帮我们指定length为int(10)。如果我们指定了int(x),那么length就会被定义为x。
其实,对于int类型来说,其最大值和最小值都是固定的,定义的int(x)中x代表的并不是长度,而是显示宽度。
当定义一个无符号int类型,且设置了ZEROFILL属性时,如果数值的长度没有达到显示的宽度时,MySQL会自动的在数值前面补零直至达到定义的宽度。
例如
create table a(
#unsigned 指定无符号, 范围是0到2^32-1,也就是4,294,967,295
#有符号的范围是 -2,147,483,648 到 2,147,483,648
id int(8) unsigned zerofill not null
)
#新增值为1. 数据长度小于8,显示时则从左向右补0,
#select * from a
----id------
00000001存储的是1,00000001只是用来给我们显示用的。
zerofill填充只对正数起作用,因为ZEROFILL属性会隐式地将数值转为无符号型。
本文链接:
/archives/1753540178593
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
刘同学的小站!
喜欢就支持一下吧