MySQL中的int(n)中n表示显示宽度,默认11,与取值范围及存储大小无关,最大有效显示宽度为255。
int(n)的意义在于与zerofill属性结合使用时,显示非负整数时默认补充的空格会用0代替。
举例测试一下:
(1)首先,如下创建表t1和t2:
可见,此时,t1和t2中插入完全相同的数据,而显示结果无任何差异。
(2)接下来,创建表t3,定义zerofill属性:
可见,查询显示结果会用0代替默认补充的空格。
(3)接下来,创建表t4和t5,验证int(n)中,n可取的最大值:
可见,int(n)中的n值最大255,否则会超出最大显示宽度。
(4)为什么MySQL中int默认11呢,个人理解,int占4个字节,有符号整数取值范围-2147483648~2147483647,无符号整数取值范围0~4294967295,最大(小)值含负号共11位,保证所有整数的有效显示。创建表t6,验证int取值范围:
(5)而zerofill属性适用非负整数,当插入负数时会报错。创建表t7:
(6)最后,看一下无符号整数的情况:
测试完毕!!