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

Oracle 視圖完整指南:建立、修改、DML 操作限制與 Top-N 分析應用

     編輯:Oracle 教學

Oracle 視圖完整指南

視圖是建立在基表之上的虛擬表,儲存 SELECT 查詢定義,提供資料存取控制、查詢簡化、避免重複存取等優勢。本文涵蓋視圖類型、建立修改語法、DML 限制規則、刪除與 Top-N 分析應用。

一、視圖基礎概念

  • 虛擬表:不儲存實體資料,查詢時動態從基表取得。
  • 基表:視圖依賴的實體表。
  • 分類:
    • 簡單視圖:單一基表、無函數、無 GROUP BY、支援 DML。
    • 複雜視圖:多基表、含函數/GROUP BY、DML 有限制。

二、建立視圖語法

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
  [(alias [, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint_name]]
[WITH READ ONLY [CONSTRAINT constraint_name]];
  • OR REPLACE:視圖存在則覆蓋。
  • FORCE:基表不存在也能建立;NOFORCE(預設)需基表存在。
  • WITH CHECK OPTION:DML 必須符合視圖 WHERE 條件。
  • WITH READ ONLY:禁止任何 DML 操作。

三、修改視圖

CREATE OR REPLACE VIEW view_name [(alias...)] AS subquery;

別名須與子查詢欄位一一對應。

四、視圖 DML 操作限制規則

操作禁止條件(視圖定義包含以下任一項)
DELETE群組函數、GROUP BY、DISTINCT、ROWNUM
UPDATE群組函數、GROUP BY、DISTINCT、ROWNUM、欄位為運算式
INSERT群組函數、GROUP BY、DISTINCT、ROWNUM、欄位為運算式、基表 NOT NULL 欄位未在視圖中

使用 WITH READ ONLY 可完全屏蔽 DML,違反將拋出 Oracle 錯誤。

五、刪除視圖

DROP VIEW view_name;

僅移除視圖定義,基表資料不受影響。

六、Top-N 分析查詢寫法

查詢前 N 筆最大/最小值:

SELECT column_list, ROWNUM
FROM (SELECT column_list FROM table ORDER BY top_n_column)
WHERE ROWNUM <= N;

注意:ROWNUM 僅能用 < 或 <=,不能用 =, >, >=。

分頁查詢範例 (第 11-20 筆)

SELECT *
FROM (
  SELECT ROWNUM rn, t.*
  FROM (
    SELECT * FROM employees ORDER BY salary DESC
  ) t
  WHERE ROWNUM <= 20
)
WHERE rn > 10;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved