很多人对mysql中int(n)有误解,包括我在内,已过一番资料的查找,总结了int(n)的问题 !
类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
(带符号的/无符号的) | (带符号的/无符号的) | ||
TINYINT | 1 | -128 | 127 |
0 | 255 | ||
SMALLINT | 2 | -32768 | 32767 |
0 | 65535 | ||
MEDIUMINT | 3 | -8388608 | 8388607 |
0 | 16777215 | ||
INT | 4 | -2147483648 | 2147483647 |
0 | 4294967295 | ||
BIGINT | 8 | -9223372036854775808 | 9223372036854775807 |
0 | 18446744073709551615 |
表格一共有四列分别表式:字段类型, 占用字节数, 允许存储的最小值, 允许存储的最大值.
列子:
int(5) 其实是和另一个属性 zerofill 配合使用的,表示如果该字段值的宽度小于 5 时,会自动在前面补 0 ,如果宽度大于等于 5 ,那就不需要补 0 。
#int(5) length 字段添加了 zerofill 属性
mysql> select * from test;
+----+--------+
| id | length |
+----+--------+
| 1 | 00888 |
| 2 | 00012 |
| 3 | 12345 |
| 4 | 123456 |
+----+--------+
注意前提是给该字段添加了 zerofill 属性,不然 int(5) 不起作用。
#int(5) length 字段没有 zerofill 属性
mysql> select * from test;
+----+--------+
| id | length |
+----+--------+
| 1 | 888 |
| 2 | 12 |
| 3 | 12345 |
| 4 | 123456 |
+----+--------+
看到这里应该都知道int(n)有什么作用了吧