Oracle 資料庫中最基礎的物件是表與視圖,此外尚有約束、序列、函數、預存程序、套件、觸發器等。所有資料庫操作本質上都是對這些物件的操作,深入理解它們是學好 Oracle 的關鍵捷徑。
表是資料儲存的基本結構。Oracle 8 引入分區表與物件表,8i 新增暫存表,功能日益強大。視圖則是一或多個基表資料的邏輯表達式,不佔用實體儲存空間,提供資料安全與簡化查詢的雙重優勢。
CREATE TABLE products (
PROD_ID NUMBER(4),
PROD_NAME VARCHAR2(20),
STOCK_QTY NUMBER(5,3)
);
上例建立 products 表,定義三欄位及其資料型態與長度。建表時可同時指定完整性約束(如 NOT NULL)與預設值,預設值在插入資料時若欄位為 NULL 則自動生效。
常用字典視圖包含:
DBA_TABLES / ALL_TABLES / USER_TABLES(及其 _ALL_TABLES 變體)DBA_TAB_COLUMNS / ALL_TAB_COLUMNS / USER_TAB_COLUMNS依權限範圍選擇對應視圖即可查詢表與欄位定義。
表名最長 30 字元,須以字母開頭,可含數字、底線、#、$。建議命名能描述業務含義。利用 CREATE TABLE ... AS SELECT ... 可從查詢結果快速建表,欄位型態長度自動推導:
CREATE TABLE emp AS SELECT * FROM employee; CREATE TABLE y AS SELECT * FROM x WHERE no = 2;
注意:若查詢涉及 LONG 型態,此語法將失效。
ALTER TABLE orders ADD order_date DATE;
既有資料列新欄位值預設為 NULL。
ALTER TABLE orders MODIFY (
quantity NUMBER(10,3),
status VARCHAR2(15)
);
修改規則:
ALTER TABLE table_name DROP COLUMN col_name CASCADE CONSTRAINTS; ALTER TABLE table_name SET UNUSED COLUMN col_name;
刪除欄位會同步移除相關索引與約束;大表刪除耗時長時,建議先標記 UNUSED,離峰時段再實際釋放空間。
約束分表層級與欄層級,常見類型:
PRIMARY KEY:唯一識別,不允許 NULLUNIQUE:唯一值,允許單一 NULLFOREIGN KEY:參考完整性,維護父子表關係CHECK:自訂驗證規則NOT NULL:強制非空善用約束讓資料庫自動守護資料正確性,減少應用層驗證邏輯。