我目前在我的 MySQL 数据库中有几个表,我在其中声明该id
字段为类型SMALLINT(6)
(这是正确的,因为SMALLINT
只有 65535 [长度为 5])。我在这里阅读了整数类型,当它UNSIGNED
的范围从正数增加到 65535 时。如果我专门将id
字段的属性更改为,这将如何影响我的数据库UNSIGNED
?SMALLINT
另外,从到有问题MEDIUMINT
吗?
我的数据库类型是MyISAM。
我目前在我的 MySQL 数据库中有几个表,我在其中声明该id
字段为类型SMALLINT(6)
(这是正确的,因为SMALLINT
只有 65535 [长度为 5])。我在这里阅读了整数类型,当它UNSIGNED
的范围从正数增加到 65535 时。如果我专门将id
字段的属性更改为,这将如何影响我的数据库UNSIGNED
?SMALLINT
另外,从到有问题MEDIUMINT
吗?
我的数据库类型是MyISAM。
您应该可以从 切换SMALLINT
到MEDIUMINT
- 不会丢失任何数据。
MySQL 中的普通整数可以是下限和上限之间的任何数字。对于有符号整数,下限为负数,上限为正数。带符号的 ASMALLINT
可以介于 -32768 和 32767 之间。但是,无符号整数只是正数。下限为零,上限为 65535。
不过,我通常INT
用于 ID。我宁愿对 ID 字段设置一个上限,使其永远不应该达到。
使用UNSIGNED
类型的主要问题是,如果您执行任何导致负数的算术运算,您最终会得到一个大数。但是,对于 ID,这不太可能成为问题,我经常使用它们来减少内存使用量。
我想不出使用SMALLINT
then 更改为的任何问题,MEDIUMINT
因为扩大数据类型通常不会导致问题。