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