真是一个安心的问题。
我的数据库中有一个字段tinyint(3)
用作整数值。我现在意识到这是一个低值并想将其更改为smallint
. 如果我使用 phpMyAdmin 更改此设置,是否会影响任何当前数据?我在本地尝试过,看起来不错,但我更喜欢由具有更多数据库经验的人运行它。
您可以使用以下查询:
mysql> ALTER TABLE TableName MODIFY Id SMALLINT
还要确保列是否附加了任何约束,那么您需要首先删除这些约束。
您的数据会在某种程度上受到影响——它将从 更改tinyint
为smallint
,因此实际上整个列都将进行CAST
操作。但在经历任何截断或数据丢失的意义上它不会受到影响。
因为tinyint
是 的一个子集smallint
,所以这个转换操作应该不会引起任何问题。如果您尝试在查询中将tinyint
值强制转换smallint
为,您永远不会期望它会失败,因为 everytinyint
也是smallint
. 修改表架构时也适用相同的逻辑。