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设置成什么,他的最大值是不变的,除了设置自动补全外并没什么区别,保持默认就好了。
本文深入解析MySQL中int类型的特性,解释为何其显示宽度默认为11位,与数据存储上限及显示需求的关系,并概述了MySQL各种整数类型的数据范围。
9253

被折叠的 条评论
为什么被折叠?



