ALTER [IGNORE] TABLE tbl_name
alter_spec [, alter_spec ...]
alter_spec:
ADD [COLUMN] col_def [FIRST | AFTER col_name]
| ADD INDEX [idx_name] (col_list)
| ADD PRIMARY KEY (col_list)
| ADD UNIQUE [idx_name] (col_list)
| ALTER [COLUMN] col_name {SET DEFAULT val | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name col_def
| MODIFY [COLUMN] col_def
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP INDEX idx_name
| RENAME [AS] new_tbl_name
| table_options
ALTER TABLE employee ADD COLUMN account_number INT;ALTER TABLE employee ADD INDEX idx_id (id);ALTER TABLE employee ADD PRIMARY KEY (id);ALTER TABLE employee ADD UNIQUE uk_email (email);ALTER TABLE employee CHANGE id salary INT;ALTER TABLE employee DROP COLUMN customer_id;ALTER TABLE employee DROP PRIMARY KEY;ALTER TABLE employee DROP INDEX idx_customer_id;ALTER TABLE employee MODIFY first_name VARCHAR(100);ALTER TABLE employee RENAME TO customer;ALTER TABLE books
ADD PRIMARY KEY (book_id),
ADD CONSTRAINT fk_pub FOREIGN KEY (pub_id) REFERENCES publishers(pub_id),
ADD COLUMN format ENUM('paperback','hardcover') NOT NULL AFTER book_name;
ALGORITHM=INPLACE, LOCK=NONE 多數操作pt-online-schema-change / gh-ost 雙寫零停機SHOW PROCESSLIST 確認無長鎖CHANGE 需完整重定義欄位,MODIFY 僅調整型別/屬性| 版本 | 關鍵特性 |
|---|---|
| 5.6 | Online DDL 首發(INPLACE) |
| 5.7 | 擴充 INPLACE 覆蓋範圍、支援 RENAME INDEX |
| 8.0 | INSTANT ADD COLUMN(純元數據)、INSTANT DROP COLUMN、功能索引、隱藏索引 |
熟練 ALTER TABLE 各子句,配合線上變更工具,安全演進資料庫結構零停機。