mysql 中的int(3) int(10) int(11)

今天面试了个美国海龟,他说他很熟悉mysql。于是 就问问他,mysql 中的 int(3) int(10) int(11) 的区别,结果说感觉

没啥区别。 我说好吧,那你还说很熟悉mysql.

其实,INT[(M)] [UNSIGNED] [ZEROFILL]   M默认为11

普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。

这里的M代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(3)只能存储3个长度的数字,int(11)就会存储11个长度的数字,这是大错特错的。其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储位010,也就是说这个3代表的是默认的一个长度,当你不足3位时,会帮你不全,当你超过3位时,就没有任何的影响。int(M) M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关。

Mysql类型关键字后面的括号内指定整数值的显示宽度(例如,INT(3)    INT(10)   INT(11) )

 

所以int(10)与int(11)后的括号中的字符表示显示宽度,整数列的显示宽度与mysql需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,int类型的字段能存储的数据上限还是2147483647(有符号型)和4294967295(无符号型)。

你可能感兴趣的:(mysql 中的int(3) int(10) int(11))