視圖簡介

視圖是一個虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。但是,視圖並不在數據庫中以存儲的數據值集形式存在。行和列 數據來自由定義視圖的查詢所引用的表,並且在引用視圖時動態生成。
  對其中所引用的基礎表來說,視圖的作用類似於篩選。定義視圖的篩選可以來自當前或其它數據庫的一個或多個表,或者其它視圖。分佈式查詢也可用於定義使 用多個異類源數據的視圖。
  視圖是存儲在數據庫中的查詢的SQL 語句,它主要出於兩種原因:安全原因, 視圖可以隱藏一些數據,如:社會保險基金錶,可以用視圖只顯示姓名,地址,而不顯示社會保險號和工資數等,另一原因是可使複雜的查詢易於理解和使用。
  視圖:查看圖形或文檔的方式。
  視圖是從一個或多個表或視圖中導出的表,其結構和數據是建立在對錶的查詢基礎上的。和表一樣,視圖也是包括幾個被定義的數據列和多個數據行,但就本質 而言這些數據列和數據行來源於其所引用的表。
  所以視圖不是真實存在的基礎表而是一張虛表,視圖所對應的數據並不實際地以視圖結構存儲在數據庫中,而是存儲在視圖所引用的表中。
  視圖一經定義便存儲在數據庫中,與其相對應的數據並沒有像表那樣又在數據庫中再存儲一份,通過視圖看到的數據只是存放在基本表中的數據。對視圖的操作 與對錶的操作一樣,可以對其進行查詢、修改(有一定的限制)、刪除。
  當對通過視圖看到的數據進行修改時,相應的基本表的數據也要發生變化,同時,若基本表的數據發生變化,則這種變化也可以自動地反映到視圖中。
  視圖有很多優點,主要表現在:
  •視點集中
  •簡化操作
  •定製數據
  •合併分割數據
  •安全性
  13.9.1 視點集中
  視圖集中即是使用戶只關心它感興趣的某些特定數據和他們所負責的特定任務。這樣通過只允許用戶看到視圖中所定義的數據而不是視圖引用表中的數據而提高 了數據的安全性。
  13.9.2 簡化操作
  視圖大大簡化了用戶對數據的操作。因爲在定義視圖時,若視圖本身就是一個複雜查詢的結果集,這樣在每一次執行相同的查詢時,不必重新寫這些複雜的查詢 語句,只要一條簡單的查詢視圖語句即可。可見視圖向用戶隱藏了表與表之間的複雜的連接操作。
  13.9.3 定製數據
  視圖能夠實現讓不同的用戶以不同的方式看到不同或相同的數據集。因此,當有許多不同水平的用戶共用同一數據庫時,這顯得極爲重要。
  13.9.4 合併分割數據
  在有些情況下,由於表中數據量太大,故在表的設計時常將表進行水平分割或垂直分割,但表的結構的變化卻對應用程序產生不良的影響。如果使用視圖就可以 重新保持原有的結構關係,從而使外模式保持不變,原有的應用程序仍可以通過視圖來重載數據。
  13.9.5 安全性
  視圖可以作爲一種安全機制。通過視圖用戶只能查看和修改他們所能看到的數據。其它數據庫或表既不可見也不可以訪問。如果某一用戶想要訪問視圖的結果 集,必須授予其訪問權限。視圖所引用表的訪問權限與視圖權限的設置互不影響。
  從用戶角度來看,一個視圖是從一個特定的角度來查看數據庫中的數據。從數據庫系統內部來看,一 個視圖是由SELECT語句組成的查詢定義的虛擬表。從數據庫系統內部來看,視圖是由一張或多張表中的數據組成的,從數據庫系統外部來看,視圖就如同一張 表一樣,對錶能夠進行的一般操作都可以應用於試圖,例如查詢,插入,修改,刪除操作等。

 

原文:http://blog.csdn.net/yanglidong/archive/2008/12/12/3501636.aspx

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