ALTER TABLE table_name CHANGE COLUMN old_col_name new_col_name column_definition;
關鍵點:必須**完整重述列定義**(類型、長度、NOT NULL、DEFAULT、COMMENT 等),否則列屬性會重置為默認值。
將表 tv_play 中字段 shit 改為 a_piece_of_shit:
ALTER TABLE tv_play CHANGE COLUMN shit a_piece_of_shit VARCHAR(255) NOT NULL DEFAULT '' COMMENT '新字段名';
ALTER TABLE tv_play ADD COLUMN a_piece_of_shit VARCHAR(255) NOT NULL DEFAULT '' COMMENT '新字段名';
UPDATE tv_play SET a_piece_of_shit = shit;
SELECT COUNT(*) FROM tv_play WHERE a_piece_of_shit != shit OR (a_piece_of_shit IS NULL AND shit IS NOT NULL) OR (a_piece_of_shit IS NOT NULL AND shit IS NULL);
ALTER TABLE tv_play DROP COLUMN shit;
shit 修改為 a_piece_of_shit。CHANGE COLUMN。CHANGE COLUMN 仍可能鎖表。大表建議用 pt-online-schema-change 或 gh-ost。MySQL 改字段名用 ALTER TABLE ... CHANGE COLUMN,**必須帶上完整列定義**。有數據時**新增列→複製數據→驗證→刪除舊列**最安全,避免屬性丟失與鎖表風險。工具操作同理,生產環境大表請用在線變更工具。