根據MySql文檔,咱們知道在修改表內某一列的屬性的時候,MySql支持3中語法結構:code
ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
這裏比較一下這三種語法的不一樣之處,以及什麼狀況下應該選用什麼語法索引
語法 | 功能 | 說明 |
---|---|---|
ALTER | 只能更改列的默認值 | |
CHANGE | 能夠重命名列或者修改列的定義 | 標準SQL的擴展 |
MODIFY | 能夠更改列的定義,但不能更改列的名稱 | 兼容Oracle的擴展 |
經過文檔介紹的功能,咱們就基本可以判斷處該使用使用哪一種語法,CHANGE功能最強大,什麼狀況下均可以使用(達到預期的效果)。可是還有一個區別: |
因此,當只須要修改某一列的默認值的時候,優先選擇用ALTER,須要修改列的名稱用CHANGE,只修改列的定義用MIODIFY文檔
若是修改的列上有索引,修改完後最好重建一下索引it