首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 資料庫核心物件:表與視圖的建立、管理與最佳實踐

     編輯:Oracle 資料庫基礎

前言:掌握物件操作,是精通 Oracle 的捷徑

Oracle 資料庫物件繁多,但「表」與「視圖」是資料存儲與邏輯呈現的雙基石。理解兩者的創建語法、約束機制、權限模型及應用場景,是 DBA 與開發者的必修課。本文系統梳理表與視圖的核心操作,並融入實戰經驗。

一、表的創建與管理

1. 標準創建語法解析

CREATE TABLE table_name (
  col_name data_type [DEFAULT expr] [COLUMN CONSTRAINT],
  ...
  [TABLE CONSTRAINT]
  [TABLE_PARTITION_CLAUSE]
);

關鍵規則:
• 表名/欄位名支援中英,最長 30 字元,同用戶下不可重名
• 單表最多 2000 欄位
• 避免使用保留字
• DEFAULT 設定預設值、COLUMN CONSTRAINT 定義欄位級約束(NOT NULL, UNIQUE, CHECK...)、TABLE CONSTRAINT 定義表級約束(PK, FK, 複合 UNIQUE...)、TABLE_PARTITION_CLAUSE 定義分區策略

2. 子查詢快速複製表結構與資料

CREATE TABLE new_table (new_col1, new_col2) AS
SELECT col1, col2 FROM old_table WHERE condition;
  • 可同步複製結構、資料、重新命名欄位
  • WHERE 條件控制複製資料範圍
  • 省去手動定義 DDL 與 INSERT 的雙重工作

3. 刪除表與級聯約束處理

DROP TABLE table_name [CASCADE CONSTRAINTS];

CASCADE CONSTRAINTS 會自動刪除引用該表的外鍵約束,避免「ORA-02449: unique/primary keys referenced by foreign keys」報錯。僅表擁有者或具備 DROP ANY TABLE 權限者可執行。

二、視圖的本質與應用優勢

本質:基於一/多張基表或視圖的 邏輯定義(對應一個 SELECT 查詢),不儲存實體資料。
核心價值:

  • 🔒 安全隔離:暴露特定欄位/行,隱藏敏感資料(如薪資、身分證號)
  • 🔧 邏輯簡化:封裝複雜 JOIN、聚合、轉換邏輯,應用端像查單表一樣查視圖
  • 🔄 結構解耦:基表結構變更時,僅調整視圖定義,應用端 SQL 無感
  • 📊 多維呈現:同一基表衍生不同業務視角(部門視圖、薪資視圖、審計視圖...)

三、視圖的創建與進階選項

CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW view_name [(alias1, alias2...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint_name]]
[WITH READ ONLY];
選項說明實戰建議
OR REPLACE視圖存在時覆蓋,避免 DROP 再 CREATE 導致權限遺失生產環境標配
FORCE基表不存在也強制創建部署腳本預建視圖時使用,上線後補建基表
NOFORCE基表必須存在(預設)常規開發模式
別名重新命名子查詢輸出欄位統一業務命名規範(如 emp_no → employee_id)
WITH CHECK OPTIONDML 操作必須符合視圖 WHERE 條件防止透過視圖寫入「不屬於該視圖」的資料
WITH READ ONLY視圖唯讀,禁止 DML報表、審計類視圖必加

刪除視圖

DROP VIEW view_name;

僅移除定義,不影響基表資料。需視圖擁有者或 DROP ANY VIEW 權限。

四、實戰最佳實踐清單

  1. 命名規範:表用單數名詞(EMPLOYEE),視圖加 V_ 前綴 + 業務域(V_HR_EMP_SALARY)
  2. 約束前置:PK、FK、NOT NULL、CHECK 在建表時一併定義,而非事後補丁
  3. 視圖而非 SELECT *:所有應用查詢強制走視圖,預留未來擴充彈性
  4. WITH READ ONLY:唯讀業務場景(報表、對帳、匯出)一律加上,杜絕誤刪/誤改
  5. 文件化:維護「物件設計文檔」,記錄表/視圖用途、欄位業務含義、約束邏輯、權限矩陣

總結

表是資料的「骨架」,視圖是資料的「面孔」。扎實掌握 DDL 語法、約束機制、視圖進階選項,並落地命名、權限、文檔等工程化規範,才能構建可維護、高安全、易擴充的 Oracle 資料架構。從今天開始,把每一個 CREATE TABLE/VIEW 都當作系統穩定性的基石來對待。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved