更改整个数据库中的数据类型

时间:2014-04-05 18:18:36

标签: mysql sql information-schema

我错误地在MySQL中创建了数据类型为int(200)varchar(200)double(200,2)的表格。现在我想将其更改为int(20)varchar(20)double(20,2)。由于数据库非常大,逐个更改它们是一项非常非常困难的任务。我不确定,但我认为遵循SQL可以做到 -

UPDATE INFORMATION_SCHEMA.COLUMNS
SET COLUMN_TYPE='INT(20)'
WHERE COLUMN_TYPE='INT(200)'
  AND TABLE_SCHEMA = 'DATABASE_NAME';

它会解决我的问题并且安全吗。

提前致谢。

2 个答案:

答案 0 :(得分:0)

ALTER TABLE table_name CHANGE collumn_Name1 collumn_Name2 INT(20);

它应该有用。

注意:如果您不想更改其名称,则Collumn_name2是新的Collumn名称,然后键入相同的collumn名称。

答案 1 :(得分:0)

所以伙计们

我不会改变我的数据库中的任何内容,因为在阅读文档之后我认为使用int(200),double(200,2),varchar(200)没有任何错误,它将不会根据我的要求,我有任何麻烦。

我还想为原来的问题添加一个解决方案 -

我们可以编写一个php脚本来改变整个数据库中的数据类型以及以下代码 -

$loop2=$con->query("SELECT COLUMN_NAME, TABLE_NAME, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'database_name' AND COLUMN_TYPE = 'int(200)'");

    while ($row2 =mysqli_fetch_array($loop2))
    {
         $row1=$con->query("alter table database_name.$row2[TABLE_NAME] change column $row2[COLUMN_NAME] $row2[COLUMN_NAME] int(20) default '$row2[COLUMN_DEFAULT]'");

    }