1。簡化應用程序。
union
select b.id id from b;
select id from A_B order by id;
對其中所引用的基礎表來說,視圖的作用類似於篩選。定義視圖的篩選可以來自當前或其它數據庫的一個或多個表,或者其它視圖。分佈式查詢也可用於定義使用多個異類源數據的視圖。如果有幾臺不同的服務器分別存儲組織中不同地區的數據,而您需要將這些服務器上相似結構的數據組合起來,這種方式就很有用。
一、視圖的作用
* 簡單性。看到的就是需要的。視圖不僅可以簡化用戶對數據的理解,也可以簡化他們的操作。那些被經常使用的查詢可以被定義爲視圖,從而使得用戶不必爲以後的操作每次指定全部的條件。
* 安全性。通過視圖用戶只能查詢和修改他們所能見到的數據。數據庫中的其它數據則既看不見也取不到。數據庫授權命令可以使每個用戶對數據庫的檢索限制到特定的數據庫對象上,但不能授權到數據庫特定行和特定的列上。通過視圖,用戶可以被限制在數據的不同子集上:
使用權限可被限制在基表的行的子集上。
使用權限可被限制在基表的列的子集上。
使用權限可被限制在基表的行和列的子集上。
使用權限可被限制在多個基表的連接所限定的行上。
使用權限可被限制在基表中的數據的統計彙總上。
使用權限可被限制在另一視圖的一個子集上,或是一些視圖和基表合併後的子集上。
* 邏輯數據獨立性。視圖可幫助用戶屏蔽真實表結構變化帶來的影響。
二、視圖的優點
(1)視圖能簡化用戶的操作
(2)視圖機制可以使用戶以不同的方式查詢同一數據
(3)視圖對數據庫重構提供了一定程度的邏輯獨立性
(4)視圖可以對機密的數據提供安全保護
三、視圖的安全性
視圖的安全性可以防止未授權用戶查看特定的行或列,是用戶只能看到表中特定行的方法如下:
1 在表中增加一個標誌用戶名的列;
2 建立視圖,是用戶只能看到標有自己用戶名的行;
3 把視圖授權給其他用戶。
四、邏輯數據獨立性
視圖可以使應用程序和數據庫表在一定程度上獨立。如果沒有視圖,應用一定是建立在表上的。有了視圖之後,程序可以建立在視圖之上,從而程序與數據庫表被視圖分割開來。視圖可以在以下幾個方面使程序與數據獨立:
1 如果應用建立在數據庫表上,當數據庫表發生變化時,可以在表上建立視圖,通過視圖屏蔽表的變化,從而應用程序可以不動。
2 如果應用建立在數據庫表上,當應用發生變化時,可以在表上建立視圖,通過視圖屏蔽應用的變化,從而使數據庫表不動。
3 如果應用建立在視圖上,當數據庫表發生變化時,可以在表上修改視圖,通過視圖屏蔽表的變化,從而應用程序可以不動。
4 如果應用建立在視圖上,當應用發生變化時,可以在表上修改視圖,通過視圖屏蔽應用的變化,從而數據庫可以不動。
五、視圖的書寫格式
CREATE VIEW <視圖名>[(列名組)]
AS <子查詢>
DROP VIEW <索引名>
注意:視圖可以和基本表一樣被查詢,但是利用視圖進行數據增,刪,改操作,會受到一定的限制。
(1)由兩個以上的基本表導出的視圖
(2)視圖的字段來自字段表達式函數
(3)視圖定義中有嵌套查詢
(4)在一個不允許更新的視圖上定義的視