Mysql 从tinyint更改为smallint,数据库中充满数据

Mysql 从tinyint更改为smallint,数据库中充满数据,mysql,sql,database,tinyint,Mysql,Sql,Database,Tinyint,一个让人安心的问题 我的数据库中有一个字段,它使用tinyint(3)作为整数值。我现在意识到这是为了降低值,并希望将其更改为smallint。如果我使用phpMyAdmin更改此项,是否会影响任何当前数据?我在本地尝试过,看起来不错,但我更喜欢由有更多数据库经验的人来运行它。您可以使用以下查询: mysql> ALTER TABLE TableName MODIFY Id SMALLINT 另外,如果列附加了任何约束,则需要首先删除这些约束。您的数据将受到某种影响--它将从tinyin

一个让人安心的问题


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

您可以使用以下查询:

mysql> ALTER TABLE TableName MODIFY Id SMALLINT
另外,如果列附加了任何约束,则需要首先删除这些约束。

您的数据将受到某种影响--它将从
tinyint
更改为
smallint
,因此实际上整个列将进行
CAST
操作。但它不会受到任何截断或数据丢失的影响


由于
tinyint
smallint
的一个子集,因此此强制转换操作不应导致任何问题。如果您试图在查询中将
tinyint
值强制转换为
smallint
,您绝对不会期望失败,因为每个
tinyint
也是
smallint
。修改表架构时,同样的逻辑也适用。

谢谢您的回复。我不确定什么是约束,但我还没有手动设置任何约束。我的表非常简单,其中一个字段(称为“score”)包含一个分数。这个最初设置为tinyint(3),但结果是它不够大。我刚刚在phpmyadmin中更改了它,但这应该没问题,不是吗?请执行
SHOW CREATE TABLE
查看它当前对Id的说明。示例:
notnull
AUTO_INCREMENT
,…--这些需要在圣坛上重复,佩雷斯,你会失去它们的。这对我来说已经足够好了。谢谢你们两位的帮助,很抱歉我不能把他们都标记为正确的。我真的怀疑phpmyadmin是否会做必要的修改。