Oracle 基礎入門(七):資料表建立、修改與刪除完整指南
一、建立資料表 (CREATE TABLE)
語法結構
CREATE TABLE [schema.]table_name
(
column_name datatype [DEFAULT expr] [constraint] [, ...]
);
關鍵說明
- schema:指定擁有者,省略則為當前用戶。
- datatype:資料型別與長度(如
VARCHAR2(50)、NUMBER(10,2))。
- constraint:可在欄位層級定義
NOT NULL、PRIMARY KEY、UNIQUE、CHECK、FOREIGN KEY。
範例:會員表
CREATE TABLE members (
member_id NUMBER(10) NOT NULL,
username VARCHAR2(30) NOT NULL,
password_hash VARCHAR2(100) NOT NULL,
email VARCHAR2(100),
reg_date DATE DEFAULT SYSDATE,
status CHAR(1) DEFAULT 'A' CHECK (status IN ('A','I')),
CONSTRAINT pk_members PRIMARY KEY (member_id),
CONSTRAINT uk_username UNIQUE (username)
);
命名規範(必須遵守)
- 首字元必須為字母(A-Z, a-z)。
- 不可使用 Oracle 保留字(如
TABLE, INDEX)。
- 最大長度 30 字元(12.2 起支援 128 字元)。
- 同一 Schema 下表名唯一。
- 僅允許字母、數字、底線(
_)、美元符號($)、井號(#),不可含空格或引號。
- 不區分大小寫,系統自動轉大寫儲存。
二、修改資料表 (ALTER TABLE)
修改現有欄位
ALTER TABLE table_name MODIFY (column_name new_datatype [DEFAULT expr] [constraint]);
範例:擴大帳號密碼長度
ALTER TABLE members MODIFY (
username VARCHAR2(50),
password_hash VARCHAR2(200)
);
新增欄位
ALTER TABLE table_name ADD (column_name datatype [DEFAULT expr] [constraint]);
範例:新增電話與地址
ALTER TABLE members ADD (
phone VARCHAR2(20),
address VARCHAR2(200)
);
刪除欄位
ALTER TABLE table_name DROP COLUMN column_name;
-- 或批次刪除
ALTER TABLE table_name DROP (col1, col2);
範例:移除電話與地址
ALTER TABLE members DROP (phone, address);
三、刪除資料表 (DROP TABLE)
DROP TABLE table_name [CASCADE CONSTRAINTS] [PURGE];
CASCADE CONSTRAINTS:同時刪除引用此表的外鍵約束。
PURGE:直接永久刪除,不進入回收站(慎用)。
範例
DROP TABLE members CASCADE CONSTRAINTS PURGE;
實務小撇步
- 建表前先用
DBMS_METADATA.GET_DDL 導出現有結構備份。
- 大表修改欄位型別時,考慮
DBMS_REDEFINITION 線上重定義避免鎖表。
- 刪除表前確認無關鍵業務依賴,必要時先
RENAME 觀察一段時間。