爲什麼我需要創建一個視圖,當我可以簡單地寫一個選擇查詢?例如對於例如 在oracle中有什麼用途?
/
CREATE OR REPLACE VIEW testview AS SELECT empno,ename,sal FROM emp;
/
取而代之的是我爲什麼不能寫爲
/
SELECT empno,ename,sal FROM emp;
/
什麼是views.In的實際使用,使用該方案的意見一個簡單的選擇這樣的查詢?
爲什麼我需要創建一個視圖,當我可以簡單地寫一個選擇查詢?例如對於例如 在oracle中有什麼用途?
/
CREATE OR REPLACE VIEW testview AS SELECT empno,ename,sal FROM emp;
/
取而代之的是我爲什麼不能寫爲
/
SELECT empno,ename,sal FROM emp;
/
什麼是views.In的實際使用,使用該方案的意見一個簡單的選擇這樣的查詢?
甲骨文的意見提供了一些引人注目的好處。這些包括:
正在使用的代碼的通用性。由於視圖基於一組常見的SQL,這意味着當它被調用時,它不太可能需要解析。這是因爲被調用的基本底層SQL始終是相同的。但是,由於您可以在調用視圖時添加其他where子句,因此您仍然需要使用綁定變量。額外的where子句沒有綁定變量仍然可以導致硬解析!
安全。長久以來,視圖一直用於隱藏實際包含正在查詢的數據的表。此外,視圖可用於限制給定用戶有權訪問的列。在較不復雜的數據庫上使用視圖來實現安全性可能不是一件壞事。隨着數據庫變得越來越複雜,這種解決方案變得越來越難以擴展,需要其他解決方案。
謂詞推動。 Oracle支持將謂詞推送到給定的視圖中。
表現。應該使用它們來代替表格以加快執行速度。
關於表現我不同意。爲什麼一個視圖比一般的選擇要快?唯一的原因可能是:當你選擇一個視圖時,Select語句總是相同的,Oracle可以重用現有的執行計劃或存儲在結果緩存中的任何數據。但是,這也適用於幾次運行相同的常規選擇語句。因此,視圖和常規選擇之間沒有區別。 – 2014-11-21 12:07:52
再次使用的意見是,你可以存儲複雜的查詢。例如,如果您需要查詢來自多個表的數據,則更容易一次創建視圖,以便下次需要該數據時,不必編寫查詢以再次將這些表連接起來。相反,你可以查詢視圖。
視圖的方式不是Oracle的事情,它們在很多(如果不是全部的話)RDBM系統中都可用。
這樣的問題的第一站是Oracle數據庫概念https://docs.oracle.com/database/121/CNCPT/schemaob.htm#CNCPT311,它是文檔的一部分(並且每個使用Oracle的人員都需要閱讀) 。當你有特定的問題時再回來。 – 2014-11-21 10:57:37