ALTER TABLE 是 Oracle 資料庫結構變更的核心指令,本文整理欄位層級的四大操作標準語法,適用於 Oracle 10g 以上版本,部分語法符合 ANSI SQL 標準,可跨資料庫參考。
alter table 表名 modify 欄位名 資料型態(長度);
範例:
alter table table_name modify column_name varchar2(10);
注意:
alter table 表名 rename column 舊欄位名 to 新欄位名;
範例:
alter table table_name rename column old_column to new_column;
影響範圍: 視圖、PL/SQL 程式、觸發器、索引、外鍵等相依物件不會自動更新,需同步修改應用程式碼。
alter table 表名 add(欄位名 資料型態(長度));
範例:
alter table table_name add(one_column varchar2(10));
alter table table_name add( one_column varchar2(10), two_column number(5), three_column date );
補充: 11g+ 可加 default 值 not null 避免全表更新:
alter table t add (status number(1) default 1 not null);
alter table 表名 drop(欄位名); -- 或 alter table 表名 drop column 欄位名;
範例:
alter table table_name drop(one_column);
alter table table_name drop(one_column, two_column, three_column);
-- 1. 僅標記未使用(瞬間完成,釋放空間需後續 DROP UNUSED COLUMNS) alter table table_name set unused column col_name; -- 2. 真正釋放空間 alter table table_name drop unused columns;
大表刪除欄位建議先 SET UNUSED,維護窗口再 DROP UNUSED COLUMNS,減少鎖定時間。
alter table emp modify (sal number(10,2)) -- 調整薪資精度 rename column ename to emp_name -- 重命名 add (email varchar2(100)) -- 新增信箱 drop column old_flag; -- 移除舊旗標
expdp 匯出結構定義備份V$SESSION_WAITexec dbms_stats.gather_table_stats('SCHEMA','TABLE')