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

Roh*_*han 1 mysql alter

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

ALTER TABLE *table* MODIFY *column name* VARCHAR(1000);
Run Code Online (Sandbox Code Playgroud)

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

Bil*_*win 5

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

ALTER TABLE *table* 
    MODIFY *columnname1* VARCHAR(1000), 
    MODIFY *columnname2* VARCHAR(1000), 
    MODIFY *columnname3* VARCHAR(1000),
    ...etc...;
Run Code Online (Sandbox Code Playgroud)

在一个子句中没有"修改所有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;
Run Code Online (Sandbox Code Playgroud)

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