視圖是基於 SQL 語句的結果集的可視化的表。
視圖包含行和列,就像一個真實的表。視圖中的字段就是來自一個或多個數據庫中的真實的表中的字段。我們可以向視圖添加 SQL 函數、WHERE 以及 JOIN 語句,我們也可以提交數據,就像這些來自於某個單一的表。
注釋:數據庫的設計和結構不會受到視圖中的函數、where 或 join 語句的影響。
也可以理解為,視圖是從一個或幾個基本表(或視圖)導出的表。它與基本表不同,是一個虛表。數據庫只存放視圖的定義,而不存放視圖對應的數據,這些數據仍存放在原來的基本表中。所以基本表中的數據發生變化,從視圖中查詢出的數據也就隨之改變了。從這個意義上講,視圖就像一個窗口,透過它可以看到數據庫中自己感興趣的數據及其變化。
視圖的好處
1、 視圖能簡化用戶操作
視圖機制使用戶可以將注意力集中在所關心地數據上。如果這些數據不是直接來自基本表,則可以通過定義視圖,使數據庫看起來結構簡單、清晰,並且可以簡化用戶的的數據查詢操作。例如,那些定義了若干張表連接的視圖,就將表與表之間的連接操作對用戶隱藏起來了。換句話說,用戶所作的只是對一個虛表的簡單查詢,而這個虛表是怎樣得來的,用戶無需了解。
2、 視圖使用戶能以多種角度看待同一數據
視圖機制能使不同的用戶以不同的方式看待同一數據,當許多不同種類的用戶共享同一個數據庫時,這種靈活性是非常必要的。
3、 視圖對重構數據庫提供了一定程度的邏輯獨立性
數據的物理獨立性是指用戶的應用程序不依賴於數據庫的物理結構。數據的邏輯獨立性是指當數據庫重構造時,如增加新的關系或對原有的關系增加新的字段,用戶的應用程序不會受影響。層次數據庫和網狀數據庫一般能較好地支持數據的物理獨立性,而對於邏輯獨立性則不能完全的支持。
4、視圖能夠對機密數據提供安全保護
有了視圖機制,就可以在設計數據庫應用系統時,對不同的用戶定義不同的視圖,使機密數據不出現在不應該看到這些數據的用戶視圖上。這樣視圖機制就自動提供了對機密數據的安全保護功能。
5、適當的利用視圖可以更清晰地表達查詢
CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
SQL CREATE OR REPLACE VIEW mahc CREATE OR REPLACE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
SQL DROP VIEW mahc DROP VIEW view_name