oracle:視圖,閃迴歸檔

視圖實際上是一個或多個表上的預查詢,這些表稱爲基表。

從視圖中檢索信息與從表中檢索信息的方法完全相同。通過某些視圖,也可以對基表進行DML操作。

視圖中並不存儲着行,它們始終存儲在表中。

視圖的優點: 可以將複雜查詢編寫爲視圖,並授予用戶訪問視圖的權限。這樣就可以對用戶屏蔽一定的複雜性。

限制用戶只能訪問視圖,這樣就可以阻止用戶直接查詢表。

限制某個視圖只能訪問基表中的某些行。這樣可以對最終用戶屏蔽部分行。

創建並使用視圖

CREATE [OR REPLACE] [{FORCE | NOFORCE}] VIEW view_name

[ ( alias_name [,alias_name ...]) ] AS subquery

[ WITH {CHECK OPTION | READ ONLY}  CONSTRAINT constraint_name];

用戶必須具有CREATE VIEW 特權才能創建視圖。

簡單視圖:包含一個子查詢,只從一個基表中檢索數據。

複雜視圖:包含一個子查詢,且具有以下特點:1.從多個基表中檢索數據。2.使用GROUP BY或DISTINCT子句對行分組。3.包含函數調用。

只能對簡單視圖執行DML操作,複雜視圖不支持DML操作。

通過爲視圖添加CHECK OPTION 約束,可以指定對視圖執行的DML操作必須滿足子查詢的條件。

CREATE VIEW cheap_products_view AS 

SELECT *

FROM products

WHERE price < 15

WITH CHECK OPTION CONSTRAINT cheap_products_view_price

通過爲視圖添加READ ONLY約束,可以指定該視圖是隻讀的。不允許DML操作。

獲取有關視圖的信息

1.使用DESCRIBE命令

2.從user_view視圖中獲取(all_view)

從user_constraints視圖中可以獲得有關視圖約束的信息。

修改視圖

CREATE OR REPLACE可以徹底替換一個視圖。

ALTER VIEW可以用來修改視圖的約束。

ALTER VIEW cheap_products_view

DROP CONSTRAINT cheap_products_view_price;

刪除視圖

DROP VIEW cheap_products_view;


閃回數據歸檔

創建閃回數據歸檔並將它添加到表之後,就可以完成下列任務:

查看行在特定時間戳的情況

查看行在兩個時間戳之間的情況

CREATE FLASHBACK ARCHIVE test_archive

TABLESPACE example

QUOTA 1 M

RETENTION 1 DAY;

修改現有表,將數據存儲在歸檔中:

ALTER TABLE store.products FLASHBACK ARCHIVE test_archive;

隨後對store.products表所做的修改都會記錄在歸檔中。

查看5分鐘以前:

SELECT product_id,name,price

FROM store.products

AS OF TIMESTAMP

(SYSTIMESTAMP - INTERVAL '5' MINUTE);

還可以查看特定時間戳,兩個時間戳之間,某個時間戳和當前時間之間的情況。

停止對錶的數據歸檔ALTER TABLE store.products NO FLASHBACK ARCHIVE

創建表時,可以爲表指定一個閃迴歸檔。

可以修改閃迴歸檔

可以從閃迴歸檔中清除給定時間戳之前的數據

可以清除閃迴歸檔中的所有數據

可以刪除閃迴歸檔

發佈了53 篇原創文章 · 獲贊 16 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章