MySql 修改表結構時 ALTER,MODIFY,CHANGE的區別

根據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 語法只是修改 .frm 文件,不會去更新表中的數據;
  • MODIFY和CHANGE在更新表結構的時候從新插入表中的數據,所以比較耗費時間。

因此,當只須要修改某一列的默認值的時候,優先選擇用ALTER,須要修改列的名稱用CHANGE,只修改列的定義用MIODIFY文檔

若是修改的列上有索引,修改完後最好重建一下索引it

相關文章
相關標籤/搜索