ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ...
ALTER TABLE student RENAME TO s;
-- 或
RENAME TABLE s TO student;
ALTER TABLE student ORDER BY stu_id DESC;
僅影響物理存儲順序,不保證後續查詢順序,查詢仍需 ORDER BY。
ALTER TABLE student ADD sex CHAR(1) AFTER stu_name;
-- 指定位置:FIRST | AFTER col_name
新欄位預設填充 NULL;若定義 NOT NULL 無 DEFAULT,MySQL 會按型別填充預設值(數值 0、字串空、日期零值)。
ALTER TABLE student DROP sex;
-- 修改欄位名、型別、位置
ALTER TABLE student CHANGE stu_tel tel CHAR(3) AFTER stu_score;
-- 僅修改型別/屬性,不改名
ALTER TABLE student MODIFY tel INT(3);
-- 新增主鍵
ALTER TABLE student ADD PRIMARY KEY (stu_id);
-- 新增唯一索引
ALTER TABLE student ADD UNIQUE INDEX uk_name (stu_name);
-- 新增外鍵
ALTER TABLE student ADD CONSTRAINT fk_class FOREIGN KEY (class_id) REFERENCES class(id);
-- 刪除索引/外鍵
ALTER TABLE student DROP INDEX uk_name;
ALTER TABLE student DROP FOREIGN KEY fk_class;
ALTER TABLE 支援 ALGORITHM=INPLACE,僅短暫元數據鎖,不鎖表、不複製表。ALGORITHM=COPY(重建表):修改列型別、刪除主鍵、轉換字元集等。pt-online-schema-change (Percona Toolkit) 無鎖變更。