摘要:視頻教程在線輔導面授招生考試大綱指定教材報名時間8.3.5視圖視圖是關系數據庫系統提供給用戶以多種角度觀察數據庫中數據的重要機制。視圖是從一個或幾個基本表(或視圖)導出的表,它與基本表不同,是一個虛表。數據庫中只存放視圖的定義,而不存放視圖對應的數據,這些數據仍存放在原來的基本表中。因此,基本表中的數
8.3.5 視圖
視圖是關系數據庫系統提供給用戶以多種角度觀察數據庫中數據的重要機制。
視圖是從一個或幾個基本表(或視圖)導出的表,它與基本表不同,是一個虛表。數據庫中只存放視圖的定義,而不存放視圖對應的數據,這些數據仍存放在原來的基本表中。因此,基本表中的數據發生變化,從視圖中查詢出的數據也就隨之改變了。從這個意義上講,視圖就像一個窗口,透過它可以看到數據庫中自己感興趣的數據及其變化。
視圖一經定義,就可以和基本表一樣被查詢、被刪除,也可以在一個視圖之上再定義新的視圖,但對視圖的更新(如增加、刪除、修改)操作則有一定的限制。
1.定義視圖
(1)建立視圖
SQL用CREATEVIEW命令建立視圖,其一般格式為:
CREATEVIEW<視圖名>[(〈列名>[,〈列名>]…)]AS〈子査詢〉
[WITHCHECKOPTION];
其中,子査詢可以是任意復雜的SELECT語句,但通常不允許含有ORDERBY子句和DISTINCT短語。WITHCHECKOPTION表示對視圖進行UPDATE,INSERT和DELETE操作時要保證更新、插入或刪除的行滿足視圖定義中的謂詞條件(即子査詢中的條件表達式)。
組成視圖的屬性列名或者全部省略,或者全部指定,沒有第3種選擇。如果省略了視圖的各個屬性列名,則隱含該視圖由子査詢中SELECT子句目標列中的諸字段組成。
(2)刪除視圖
該語句的格式為:
DROPVIEW〈視田名〉;
視圖刪除后,視圖的定義將從數據字典中刪除。但是由該視圖導出的其他視圖定義仍在數據字典中,不過該視圖己失效。用戶使用時會出錯,要用DROPVIEW語句將它們一一刪除。
就像基本表刪除后,由該基本表導出的所有視圖(定義)沒有被刪除,但均己無法使用了。刪除這些視圖(定義)需要顯式地使用DROPVIEW語句。
2.査詢視圖
視圖定義后,用戶就可以像對基本表一樣對視圖進行査詢了。
DBMS執行對視圖的査詢時,首先進行有效性檢查,檢查查詢的表、視圖等是否存在,如果存在,則從數據字典中取出視圖的定義,把定義中的子查詢和用戶的查詢結合起來,轉換成等價的對基本表的査詢:然后執行修正了的查詢。這一轉換過程稱為視圖消解(ViewResolution)。
3.更新視圖
更新視圖是指通過視閣來插入(INSERT)、刪除(DELETE)和修改(UPDATE)數據。由于視圖是不實際存儲數據的虛表,因此對視圖的更新,設終要轉換為對基本表的更新。
為防止用戶通過視圖對數據進行增加、刪除、修改時,對不屬于視圖范圍內的基本表數據進行操作,可在定義視圖時加上WITHCHECKOPTION子句。這樣在視圖上增刪改數據時,DBMS會檢查視圖定義中的條件,若不滿足條件,則拒絕執行該操作。
一般地,行列子集視圖是可更新的。除行列子集視圖外,還有些視圖理論上是可更新的,但它們的確切特征還是尚待研究的課題。還有些視圖從理論上是不可更新的。
目前各個關系數據庫系統一般都只允許對行列子集視圖進行更新,而且各個系統對視圖的更新還有更進一步的規定,由于各系統實現方法上的差異,這些規定也不盡相同。
返回目錄:通信工程師互聯網技術數據庫基礎教程匯總
編輯相關推薦:
通信工程師備考資料免費領取
去領取
專注在線職業教育25年