INT的误区

INT的误区

作者:LAMP小白  点击:1922  发布日期:2012-12-06 12:06:00  返回列表
int(M)
注意:这里的M代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(3)只能存储3个长度的数字,int(11)就会存储11个长度的数字,这是大错特错的。
其实当我们在选择使用int的类型的时候,不论是int(3)还是int(11),它在数据库里面存储的都是4个字节的长度,在使用int(3)的时候如果你输入的是10,会默认给你存储位010,也就是说这个3代表的是默认的一个长度,当你不足3位时,会帮你补全,当你超过3位时,就没有任何的影响。
前天组管问我 int(10)与int(11)有什么区别,当时觉得就是长度的区别吧,现在看,他们之间除了在存储的时候稍微有点区别外,在我们使用的时候是没有任何区别的。int(10)也可以代表2147483647这个值int(11)也可以代表。

列定义时,int(M) M的大小只在指定zerofill 时才有用,此外基本没什么意义。
列定义的类型为:i3 int(3) zerofill,i4 int(4) zerofill,i6 int(6) zerofill,i8 int(8),只有i8没有指定zerofill,查询结果如下:
mysql> select i3,i4,i6,i8 from testselect;
+------+------+--------+---------+
| i3 | i4 | i6 | i8 |
+------+------+--------+---------+
| 222 | 0444 | 004444 | 8884444 |
+------+------+--------+---------+
1 row in set (0.00 sec)

所以,int 的长度定义,只是在使用CLI模式查询时,排版显示的时候好看些(结合zerofill),此外无任何作用。
所以,不要期望使用 int (1) 比 int (11) 来压缩数据库空间,而应该考虑使用其他字段类型 如 tinyint


上一篇:emoticon制作微博表情框 下一篇:快递查询API
0