我们可以通过以下方式修改单个列的varchar()大小:
ALTER TABLE *table* MODIFY *column name* VARCHAR(1000);
有没有办法为表的所有列发出此命令?
答案 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脚本执行。