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

Oracle 視圖全解析:從創建、只讀、查詢定義到刪除

     編輯:Oracle 資料庫基礎

什麼是視圖?

視圖是基表數據的邏輯表示,不存儲實際數據,僅保存查詢定義。它像一個「展示窗口」,可從多張表、甚至其他視圖抽取數據組合展示,節省存儲空間,簡化應用端 SQL。

創建視圖

-- 基本語法
CREATE VIEW 視圖名 AS
SELECT 列名 FROM 基表 WHERE 條件;

-- 示例:營銷計劃表中狀態=1的記錄
CREATE VIEW v_valid_plans AS
SELECT * FROM ivr_marketing_plan WHERE status = 1;

命名建議:以 v_ 開頭,便於識別。

創建只讀視圖

CREATE VIEW v_valid_plans AS
SELECT * FROM ivr_marketing_plan WHERE status = 1
WITH READ ONLY;  -- 禁止通過視圖 DML

使用視圖

像查詢普通表一樣:

SELECT * FROM v_valid_plans;

查看視圖定義(DDL)

SET SERVEROUTPUT ON;
SET LONG 100000;

SELECT DBMS_METADATA.GET_DDL('VIEW', 'V_TB_STUDENT', 'JELLY') FROM DUAL;
-- 參數:對象類型、視圖名(大寫)、擁有者(大寫)

輸出示例:

CREATE OR REPLACE FORCE VIEW "JELLY"."V_TB_STUDENT" ("ID", "NAME", "SEX", "AGE") AS
select "ID","NAME","SEX","AGE" from jelly.tb_student with read only;

刪除視圖

DROP VIEW V_TB_STUDENT;
-- 若有參照完整性約束引用,需加 CASCADE CONSTRAINTS
DROP VIEW V_TB_STUDENT CASCADE CONSTRAINTS;

總結

  • 視圖 = 邏輯窗口,不佔用數據塊;
  • 常用於簡化複雜查詢、限制列/行訪問、屏蔽表結構變更;
  • 生產環境建議加 WITH READ ONLY 防止誤更新;
  • DDL 變更基表結構時,視圖可能失效,需重新編譯(ALTER VIEW ... COMPILE)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved