具有SMALLINT id字段的MySQL数据库表

具有SMALLINT id字段的MySQL数据库表,mysql,myisam,sqldatatypes,unsigned-integer,Mysql,Myisam,Sqldatatypes,Unsigned Integer,我目前在MySQL数据库中有几个表,其中我声明id字段的类型为SMALLINT(6)(这是否正确,因为SMALLINT的长度仅为65535[5])。我在整数类型下读到,当它是无符号的时,范围从正增加到65535。如果我专门将id字段的属性更改为UNSIGNED,这将如何影响我的数据库?此外,从SMALLINT转到MEDIUMINT时是否存在问题 我的数据库类型是MyISAM您可以从SMALLINT切换到MEDIUMINT——不会丢失任何数据 MySQL中的正常整数可以是介于下限和上限之间的任意数

我目前在MySQL数据库中有几个表,其中我声明
id
字段的类型为
SMALLINT(6)
(这是否正确,因为
SMALLINT
的长度仅为65535[5])。我在整数类型下读到,当它是无符号的时,范围从正增加到65535。如果我专门将
id
字段的属性更改为
UNSIGNED
,这将如何影响我的数据库?此外,从
SMALLINT
转到
MEDIUMINT
时是否存在问题


我的数据库类型是MyISAM

您可以从
SMALLINT
切换到
MEDIUMINT
——不会丢失任何数据

MySQL中的正常整数可以是介于下限和上限之间的任意数字。对于有符号整数,下限为负数,上限为正数。签名的
SMALLINT
可以介于-32768和32767之间。但是,无符号整数仅为正。下限为零,上限为65535


不过,我通常对ID使用
INT
。我宁愿将ID字段的上限设置得太高,以至于永远都不应该达到它。

使用无符号类型的主要问题是,如果您执行任何导致负数的算术运算,您最终会得到一个大数字。然而,对于ID来说,这不太可能是一个问题,我经常使用它们来减少一点内存使用

我想不出使用
SMALLINT
然后更改为
MEDIUMINT
会有什么问题,因为扩展数据类型通常不会导致问题