mysql 整形的长度问题
- tinyint
有符号的范围是-128至127;
无符号的范围是0到255,2的8 次方-1;
存储大小为 1 字节。 - smallint
有符号的范围是-32768至32767;
无符号的范围是0到65535,2的16次方-1;
存储大小为 2 个字节。 - mediumint
有符号的范围是-8388608至8388607;
无符号的范围是0到16777215,2的24次方-1;
存储大小为 3 个字节。 - int
有符号的范围是-2147483648至2147483647;
无符号的范围是0到4294967295,2的32次方-1;
存储大小为 4 个字节。 - bigint
有符号的范围是-9223372036854775808至9223372036854775807;
无符号的范围是0到18446744073709551615,2的64次方-1;
存储大小为 8 个字节。
补充说明
- mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill时有用。例如:int(3),如果实际值是2,如果列指定了zerofill,查询结果就是002,左边用0来填充。
- 注意:手机号虽然一般为纯数字,但是位数较长,若用int类型,若字段设置无符号则会被存储成4294967295,int的最大值,所以如果想用整形可以使用bigint(1),不过一般网上资料显示手机号这个字段,为了避免各种问题,用varchar的更多一点。