萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL ALTER TABLE 修改表結構完整語法指南

通用語法

ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ...

一、表層級修改

1. 重命名表

ALTER TABLE student RENAME TO s;
-- 或
RENAME TABLE s TO student;

2. 調整表行順序(物理重排)

ALTER TABLE student ORDER BY stu_id DESC;

僅影響物理存儲順序,不保證後續查詢順序,查詢仍需 ORDER BY。

二、欄位層級修改

1. 新增欄位

ALTER TABLE student ADD sex CHAR(1) AFTER stu_name;
-- 指定位置:FIRST | AFTER col_name

新欄位預設填充 NULL;若定義 NOT NULL 無 DEFAULT,MySQL 會按型別填充預設值(數值 0、字串空、日期零值)。

2. 刪除欄位

ALTER TABLE student DROP sex;

3. 修改欄位定義

-- 修改欄位名、型別、位置
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;

效能與鎖定說明

  • MySQL 5.6+ Online DDL:大部分 ALTER TABLE 支援 ALGORITHM=INPLACE,僅短暫元數據鎖,不鎖表、不複製表。
  • 部分操作仍需 ALGORITHM=COPY(重建表):修改列型別、刪除主鍵、轉換字元集等。
  • 大表變更建議:
      1. 低峰期執行。
      2. 使用 pt-online-schema-change (Percona Toolkit) 無鎖變更。
      3. 預先評估鎖等待與磁碟空間(臨時表需 1x 原表大小)。
copyright © 萬盛學電腦網 all rights reserved