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的更多一点。

原文地址:https://www.cnblogs.com/gyfluck/p/5432695.html