CREATE TABLE `table_name` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
`name` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '名稱',
`status` TINYINT NOT NULL DEFAULT 1 COMMENT '狀態:1啟用 0停用',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '建立時間',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',
PRIMARY KEY (`id`),
KEY `idx_status` (`status`),
KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='表描述';
| 操作 | 語法範例 | 備註 |
|---|---|---|
| 新增欄位 | ALTER TABLE t ADD COLUMN col VARCHAR(32) NOT NULL DEFAULT '' AFTER name; | AFTER 指定位置 |
| 修改欄位 | ALTER TABLE t MODIFY COLUMN col VARCHAR(64) NOT NULL DEFAULT ''; | 類型、預設值、註解可同步修改 |
| 重命名欄位 | ALTER TABLE t CHANGE old_col new_col VARCHAR(64) NOT NULL DEFAULT ''; | 需重複完整定義 |
| 刪除欄位 | ALTER TABLE t DROP COLUMN col; | 數據不可恢復 |
| 新增索引 | ALTER TABLE t ADD INDEX idx_col (col); | 線上 DDL (5.6+) 無鎖 |
| 刪除索引 | ALTER TABLE t DROP INDEX idx_col; | |
| 修改表名 | ALTER TABLE t RENAME TO new_t; | 元數據操作,極快 |
| 修改引擎 | ALTER TABLE t ENGINE=InnoDB; | 重建表,大表慎用 |
| 修改字符集 | ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4; | 含數據轉換,大表慎用 |
DROP TABLE [IF EXISTS] `table_name`;
-- 連帶刪除索引、觸發器、約束、權限,數據永久消失
TRUNCATE TABLE `table_name`;
-- 等同於 DROP + CREATE,重置 AUTO_INCREMENT,不可回滾,速度極快

上圖展示 phpMyAdmin 「結構」頁籤的核心操作區:
pt-online-schema-change (Percona) 或 gh-ost (GitHub),避免長時間鎖表SHOW PROCESSLIST、磁碟 IO、Replication Lagcreated_at/updated_at、合理索引、表/欄位註解MODIFY 不指定 NOT NULL 導致原 NOT NULL 列變可空CHANGE 忘記帶上完整類型定義導致資料截斷TRUNCATE 觸發器不會執行,若依賴觸發器請用 DELETE