2012-12-21 42 views
2

我試圖將一個表中的多個列的類型更改爲varchar(50)(在單個SQL查詢中)。你能告訴我我做錯了什麼,爲什麼這個查詢顯示錯誤。更改多列的列類型

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

謝謝!

+0

擺脫單引號的? – bobwienholt

+0

你想改變什麼?列名稱,類型,... –

回答

4

取下單引號和使用MODIFYCHANGE COLUMN

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

你想要的語法是:

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

您需要使用MODIFY,擺脫了單引號:

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

使用CHANGE你需要指定new_col_name然後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

0

如果你想只改變列定義(不重命名),您可以使用以下語法:

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

否則,您必須使用此語法:

ALTER TABLE 'my_table_name' 
    CHANGE 'col1old', 'col1new' varchar(50)