int(10)与int(11)后的括号中的字符表示显示宽度,整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,int类型的字段能存储的数据上限还是2147483647(有符号型)和4294967295(无符号型)
那么为什么要是11而不是10或者12呢?
因为int是4个字节,也就是4*8=32位,当有符号的时候,其中一位用于表示符号,剩下31位用于表示数字,31位表示的最大数字是“2^31-1=2,147,483,647”(这是正数),最小的数是“-2^31=-2,147,483,648”,数字是10位,符号一位,一共11位,所以,mysql int型为什么默认是11位,就是因为11位是它的最大长度
MySQL数据类型 | 含义(有符号) |
tinyint(m) | 1个字节 范围(-128~127) |
smallint(m) | 2个字节 范围(-32768~32767) |
mediumint(m) | 3个字节 范围(-8388608~8388607) |
int(m) | 4个字节 范围(-2147483648~2147483647) |
bigint(m) | 8个字节 范围(+-9.22*10的18次方) |
所以总的来说int(m)无论m设置成什么,他的最大值是不变的,除了设置自动补全外并没什么区别,保持默认就好了。