視圖
視圖是虛拟的表,與包含資料的表不同的是視圖紙包含使用時動态檢索資料的查詢
視圖實際上就是一個存儲查詢,可以混合和比對來自基本表(或其他視圖)的資料,進而建立在很多方面象另一個普通表那樣的起的作用。可以建立一個簡單的查詢,僅僅從一個表(另一個視圖)選擇幾列或幾行,而忽略其他行或列,或者也可以建立一個複雜查詢。連接配接幾個表查詢,使得這些連接配接查詢看起來更像一個表。
視圖是虛拟的表,是一個表中的資料經過某種篩選後的顯示方式,視圖由一個預定義的查詢select語句組成。
注意:
1、因為視圖不包含資料,是以每次使用視圖時,都必須處理查詢執行時所需要的任一個檢索,如果用多個聯結和過濾建立了複雜的視圖或者嵌套了視圖,可能造成性能下降的很厲害,是以在部署使用了大量視圖的應用前應該進行測試。
2、一般應該将視圖用于檢索而不是更新。
使用視圖的原因
1、重用SQL語句。
2、簡化複雜的SQL操作。
3、使用表的組成部分而不是整個表。
4、保護資料,可以給使用者授予表的特定部分的通路權限而不是整個表的通路權限。
5、更改資料格式和表示,視圖可以傳回與底層表的表示和格式不同的資料。
視圖的規則和限制
1、與表一樣,視圖必須唯一名。
2、對于可以建立的視圖數目沒有限制。
3、為了建立視圖,必須具有足夠的通路權限,這些權限由資料庫管理人員授予。
4、視圖可以嵌套。
5、ORDER BY 語句可以在視圖中使用,但如果從該視圖檢索資料的SELECT語句中包含ORDER BY語句,那麼該視圖中的ORDER BY語句将被覆寫。
6、視圖不能索引,也不能關聯觸發器或是預設值。
7、視圖可以與表一起使用。
建立視圖文法
CREATE VIEW 視圖名稱[(字段1) (字段2) (字段3)…]
AS
SQL語句
[with check option];
參數[with check option]可選項,防止使用者對資料插入、删除、更新是操作了視圖範圍外的基本表的資料。
删除視圖文法
DROP VIEW 視圖名稱;
更新視圖
通常,一般情況下,視圖時可以更新的(即可以對它們使用INSERT、UPDATE、DELETE),更新一個視圖将更新其基表(視圖本身沒有資料),如果對視圖增加或删除行,實際上是對其基表增加或删除行。
并不是所有視圖都可以更新(例如:存在分組、聯結、子查詢、并操作、聚集函數、去重操作或去重函數、導出列、計算列……這些都不能更新視圖)。
CREATE OR REPLACE VIEW 視圖名稱[(字段1) (字段2) (字段3)…]
AS
SQL語句
[with check option];
參數[with check option]可選項,防止使用者對資料插入、删除、更新是操作了視圖範圍外的基本表的資料。