欄位操作
| 操作 | 語法範例 |
| 新增欄位 | ALTER TABLE t ADD col INT NOT NULL DEFAULT 0; |
| 刪除欄位 | ALTER TABLE t DROP COLUMN col; |
| 修改欄位型別/重命名 | ALTER TABLE t CHANGE old_col new_col BIGINT NOT NULL; |
| 修改預設值 | ALTER TABLE t ALTER col SET DEFAULT 'new'; |
索引操作
| 類型 | 建立語法 | 刪除語法 |
| 普通索引 | ALTER TABLE t ADD INDEX idx_name (col); | ALTER TABLE t DROP INDEX idx_name; |
| 唯一索引 | ALTER TABLE t ADD UNIQUE uk_name (col); | 同普通 |
| 主鍵 | ALTER TABLE t ADD PRIMARY KEY (id); | ALTER TABLE t DROP PRIMARY KEY; |
| 全文索引 | ALTER TABLE t ADD FULLTEXT ft_name (col); | 同普通 |
外鍵約束操作
新增外鍵
ALTER TABLE child
ADD CONSTRAINT fk_name
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE ON UPDATE CASCADE;
- 先確保父表被引用欄位有索引
ON DELETE/UPDATE:RESTRICT(預設) | CASCADE | SET NULL | NO ACTION
刪除外鍵
ALTER TABLE child DROP FOREIGN KEY fk_name;
查看外鍵名稱:SHOW CREATE TABLE child\G
表重命名
ALTER TABLE old_name RENAME TO new_name;
外鍵相關進階操作
- 查看表狀態含外鍵資訊:
SHOW TABLE STATUS LIKE 't'\G(Comment 欄位)
- 匯入轉儲檔前關閉檢查:
SET FOREIGN_KEY_CHECKS=0; → 匯入 → SET FOREIGN_KEY_CHECKS=1;
- mysqldump 自動在輸出中包含關閉檢查指令
- 刪除被引用表需先關閉檢查或刪除外鍵
完整建表示例(含主鍵自增)
ALTER TABLE t ADD new_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (new_id);