視圖是基表數據的邏輯表示,不存儲實際數據,僅保存查詢定義。它像一個「展示窗口」,可從多張表、甚至其他視圖抽取數據組合展示,節省存儲空間,簡化應用端 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;
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 防止誤更新;ALTER VIEW ... COMPILE)。