int类型的长度值问题

很多人对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)有什么作用了吧

你可能感兴趣的:(int类型的长度值问题)