ALTER TABLE 是 DDL 核心指令,涵蓋資料表重命名、欄位增刪改、型別變更、約束管理等所有結構變更操作。本文彙整 MySQL、SQL Server、Oracle 三大資料庫的差異語法,方便跨平台維護。
MySQL 核心語法
| 操作 | 語法範例 |
| 檢視結構 | DESC table_name; |
| 重命名資料表 | ALTER TABLE t_book RENAME TO bbb; |
| 新增欄位 | ALTER TABLE table_name ADD COLUMN col_name VARCHAR(30); |
| 刪除欄位 | ALTER TABLE table_name DROP COLUMN col_name; |
| 修改欄位名稱 | ALTER TABLE bbb CHANGE old_name new_name INT; |
| 修改欄位型別/屬性 | ALTER TABLE t_book MODIFY name VARCHAR(22); |
跨平台欄位改名語法差異
| 資料庫 | 語法 |
| MySQL | ALTER TABLE t CHANGE old new INT; |
| SQL Server | EXEC sp_rename 't.old', 'new', 'COLUMN'; |
| Oracle | ALTER TABLE t RENAME COLUMN old TO new; |
資料異動(DML)補充
-- 修改單筆/多筆
UPDATE pet SET sex='f' WHERE name='Whistler';
-- 刪除單筆
DELETE FROM pet WHERE name='Whistler';
-- 清空整張表(謹慎!無 WHERE 會全刪)
DELETE FROM pet;
-- 或更快的 TRUNCATE TABLE pet;(不可 ROLLBACK)
避坑提醒
MODIFY 不能改欄位名,CHANGE 需完整重寫型別定義。
- 大表
ALTER TABLE 會鎖表,建議使用 pt-online-schema-change 或 gh-ost 線上變更。
- 外鍵欄位變更前必須先
DROP FOREIGN KEY。