ALTER TABLE 是 MySQL 中功能最強大、用法最豐富的 DDL 命令之一。本文通過實戰案例系統講解字段增刪改、表重命名、存儲引擎變更、主鍵索引管理等核心操作。
USE learning;
CREATE TABLE student(
id INT NOT NULL,
name CHAR(10) NOT NULL,
class INT NOT NULL,
age INT
);
ALTER TABLE student DROP age;
注意:若表僅剩一個字段,無法使用 DROP 刪除。
預設追加至表尾:
ALTER TABLE student ADD age INT NOT NULL;
指定位置(FIRST 置首、AFTER col_name 置後):
ALTER TABLE student ADD sex CHAR(2) FIRST; ALTER TABLE student ADD sex CHAR(2) AFTER age;
技巧:FIRST/AFTER 僅適用於 ADD,調整現有字段位置需先 DROP 再 ADD。
ALTER TABLE student MODIFY age CHAR(100);
CHANGE 舊名 新名 新類型
ALTER TABLE student CHANGE id stu_id BIGINT PRIMARY KEY;
-- 設 NOT NULL 且預設值 ALTER TABLE student MODIFY sex CHAR(2) NOT NULL DEFAULT '男'; -- 刪除預設值 ALTER TABLE student ALTER sex DROP DEFAULT;
ALTER TABLE student RENAME TO student_1;
ALTER TABLE student ENGINE = MYISAM; SHOW CREATE TABLE student; -- 驗證引擎
-- 刪除主鍵 ALTER TABLE student DROP PRIMARY KEY; -- 新增複合主鍵 ALTER TABLE student ADD CONSTRAINT PK_STUDENT PRIMARY KEY (id, class);
-- 普通索引 ALTER TABLE student ADD INDEX index_name (name); -- 唯一索引 ALTER TABLE student ADD UNIQUE emp_name (age); -- 查看索引 SHOW INDEX FROM student; -- 刪除索引 ALTER TABLE student DROP INDEX index_name;
pt-online-schema-change 避免鎖表MODIFY 不支援改名,CHANGE 需重複指定完整列定義熟練掌握 ALTER TABLE 各子句組合,能高效應對業務演進帶來的結構變更需求。