2

我正在尝试将一个表中多个列的类型更改为 varchar(50) (在单个 SQL 查询中)。你能告诉我我做错了什么,以及为什么这个查询显示错误。

ALTER TABLE 'my_table_name' 
    ALTER COLUMN 'col1' varchar(50), 
    ALTER COLUMN 'col2' varchar(50), 
    ALTER COLUMN 'col3' varchar(50)

谢谢!

4

5 回答 5

4

去掉单引号并使用MODIFYnotCHANGE COLUMN

ALTER TABLE my_table_name 
    MODIFY col1 varchar(50), 
    MODIFY col2 varchar(50), 
    MODIFY col3 varchar(50)
于 2012-12-21T16:15:04.040 回答
2

您需要使用MODIFY并摆脱单引号:

ALTER TABLE my_table_name 
    MODIFY col1 varchar(50), 
    MODIFY col2 varchar(50), 
    MODIFY col3 varchar(50)
于 2012-12-21T16:15:07.683 回答
0

你想要的语法是:

ALTER TABLE 'my_table_name'  
modify COLUMN 'col1' varchar(50),   
modify COLUMN 'col2' varchar(50),   
modify COLUMN 'col3' varchar(50)
于 2012-12-21T16:14:12.087 回答
0

使用CHANGE您需要指定new_col_namethen col_definition

ALTER TABLE `my_table_name` 
CHANGE COLUMN `col1` `col1` varchar(50),   
CHANGE COLUMN `col2` `col2` varchar(50),   
CHANGE COLUMN `col3` `col3` varchar(50)

使用MODIFY您只需要指定col_definition

ALTER TABLE `my_table_name` 
MODIFY COLUMN `col1` varchar(50),   
MODIFY COLUMN `col2` varchar(50),   
MODIFY COLUMN `col3` varchar(50)

mysql_manual

于 2012-12-21T16:18:03.663 回答
0

如果您只想更改列定义(不重命名),可以使用以下语法:

ALTER TABLE 'my_table_name' 
    MODIFY 'col1' varchar(50)

否则,您必须使用以下语法:

ALTER TABLE 'my_table_name' 
    CHANGE 'col1old', 'col1new' varchar(50)
于 2012-12-21T16:23:37.450 回答