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