ALTER TABLE student RENAME person; -- 標準語法
RENAME TABLE old_name TO new_name; -- 替代語法,支持多表重命名
ALTER TABLE person MODIFY name VARCHAR(20); -- 僅修改類型/長度
ALTER TABLE person CHANGE stu_name name VARCHAR(25); -- 舊名 新名 類型
-- 同名修改類型:CHANGE name name VARCHAR(30)
提示:CHANGE可同時改名和改類型,MODIFY僅改類型。兩者均需完整聲明類型。
ALTER TABLE person ADD sex BOOLEAN;
ALTER TABLE person ADD age INT NOT NULL;
ALTER TABLE person ADD num INT PRIMARY KEY FIRST; -- 表頭
ALTER TABLE person ADD birth DATE AFTER name; -- 指定列後
注意:列順序不影響存儲性能,僅影響SELECT *顯示順序與INSERT隱式列順序。
ALTER TABLE person ADD PRIMARY KEY (id);
ALTER TABLE score ADD CONSTRAINT fk_score_stu FOREIGN KEY (stu_id) REFERENCES student(id);
ALTER TABLE person DROP PRIMARY KEY; -- 主鍵無名,直接刪除
ALTER TABLE student3 DROP FOREIGN KEY fk_score_stu; -- 外鍵需指定名稱
關鍵:刪除有關聯表前必須先刪外鍵。刪除後外鍵列變為普通列。
ALTER TABLE user ENGINE = InnoDB;
⚠️ 警告:大表變更引擎會全表重建、鎖表、產生大量Binlog、主從延遲。生產環境必須:
pt-online-schema-change或gh-ost在線DDL工具ALTER TABLE person MODIFY id INT FIRST; -- 移至首列
ALTER TABLE person MODIFY name VARCHAR(25) AFTER id; -- 移至指定列後
DESC table確認現狀SHOW CREATE TABLE驗證INFORMATION_SCHEMA.INNODB_TRX長事務ALTER TABLE是DBA最高頻操作,熟練掌握各子句語法與風險控制,是數據庫穩定運行的保障。