使用充满数据的数据库从tinyint更改为smallint

时间:2015-03-20 13:18:01

标签: mysql sql database tinyint

真正的安心问题。

我的数据库中有一个字段,它使用tinyint(3)作为整数值。我现在意识到这是为了降低值并希望将其更改为smallint。如果我使用phpMyAdmin更改此设置,是否会影响当前的任何数据?我在本地尝试过,看起来很好,但我更喜欢由拥有更多数据库经验的人来运行它。

2 个答案:

答案 0 :(得分:4)

您可以使用以下查询:

mysql> ALTER TABLE TableName MODIFY Id SMALLINT

还要确保列上是否附加了约束,然后您需要先删除这些约束。

答案 1 :(得分:1)

您的数据受到影响 - 它会从tinyint更改为smallint,因此实际上整个列都将经历{{1}操作。但是,在经历任何截断或数据丢失的意义上,不会受到影响。

由于CASTtinyint的子集,因此此强制转换操作不应导致任何问题。如果您尝试在查询中将smallint值转换为tinyint,则永远不会期望失败,因为每个smallint也是tinyint。修改表模式时也适用相同的逻辑。