增加表中所有列的varchar()大小?

时间:2014-06-04 23:01:43

标签: mysql alter

我们可以通过以下方式修改单个列的varchar()大小:

ALTER TABLE *table* MODIFY *column name* VARCHAR(1000);

有没有办法为表的所有列发出此命令?

1 个答案:

答案 0 :(得分:5)

是的,您可以在一个ALTER语句中修改多个列:

ALTER TABLE *table* 
    MODIFY *columnname1* VARCHAR(1000), 
    MODIFY *columnname2* VARCHAR(1000), 
    MODIFY *columnname3* VARCHAR(1000),
    ...etc...;

没有#34修改所有varchar列的语法"在一个条款中。

但你可以生成如上所述的详细查询:

SELECT CONCAT('ALTER TABLE `', TABLE_NAME, '` ',
    GROUP_CONCAT(CONCAT('MODIFY COLUMN `', COLUMN_NAME, '` VARCHAR(1000)')), ';') AS _alter
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (TABLE_SCHEMA, TABLE_NAME) = ('mydatabase', 'mytable')
  AND COLUMN_TYPE LIKE 'VARCHAR%'
GROUP BY TABLE_SCHEMA, TABLE_NAME;

保存该查询的输出并将其作为SQL脚本执行。