Oracle視圖作為原始的相關資料庫中的資料變換,它的主要功能是查看相關表中的某些資料的另外的方式。可以將Oracle視圖看成是一個移動的視窗,通過它可以看到感興趣的資料。
視圖是從一個或多個實際表中獲得的,這些表的資料存放在資料庫中。那些用於產生視圖的表叫做該視圖的基表。一個視圖也可以從另一個視圖中產生。
視圖的定義存在資料庫中,與此定義相關的資料並沒有再存一份於資料庫中。通過視圖看到的資料存放在基表中。
視圖看上去非常象資料庫的物理表,對它的操作同任何其它的表一樣。當通過視圖修改資料時,實際上是在改變基表中的資料;相反地,基表資料的改變也會自動反映在由基表產生的視圖中。由於邏輯上的原因,有些Oracle視圖可以修改對應的基表,有些則不能(僅僅能查詢)。
視圖的作用
* 簡單性。看到的就是需要的。視圖不僅可以簡化使用者對資料的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義為視圖,從而使得使用者不必為以後的操作每次指定全部的條件。
* 安全性。通過視圖使用者只能查詢和修改他們所能見到的資料。資料庫中的其它資料則既看不見也取不到。資料庫授權命令可以使每個使用者對資料庫的檢索限制到特定的資料庫物件上,但不能授權到資料庫特定行和特定的列上。通過Oracle視圖,使用者可以被限制在資料的不同子集上:
使用許可權可被限制在基表的行的子集上。
使用許可權可被限制在基表的列的子集上。
使用許可權可被限制在基表的行和列的子集上。
使用許可權可被限制在多個基表的串連所限定的行上。
使用許可權可被限制在基表中的資料的統計匯總上。
使用許可權可被限制在另一視圖的一個子集上,或是一些視圖和基表合并後的子集上。
* 邏輯資料獨立性。視圖可協助使用者屏蔽真實表結構變化帶來的影響。
視圖的安全性
視圖的安全性可以防止未授權使用者查看特定的行或列,是使用者只能看到表中特定行的方法如下:
1 在表中增加一個標誌使用者名稱的列;
2 建立Oracle視圖,是使用者只能看到標有自己使用者名稱的行;
3 把視圖授權給其他使用者。
邏輯資料獨立性
視圖可以使應用程式和資料庫表在一定程度上獨立。如果沒有視圖,應用一定是建立在表上的。有了視圖之後,程式可以建立在視圖之上,從而程式與資料庫表被視圖分割開來。視圖可以在以下幾個方面使程式與資料獨立:
1 如果應用建立在資料庫表上,當資料庫表發生變化時,可以在表上建立視圖,通過視圖屏蔽表的變化,從而應用程式可以不動。
2 如果應用建立在資料庫表上,當應用發生變化時,可以在表上建立視圖,通過視圖屏蔽應用的變化,從而使資料庫表不動。
3 如果應用建立在視圖上,當資料庫表發生變化時,可以在表上修改視圖,通過視圖屏蔽表的變化,從而應用程式可以不動。
4 如果應用建立在視圖上,當應用發生變化時,可以在表上修改視圖,通過視圖屏蔽應用的變化,從而資料庫可以不動。