MySQL視圖的基本操作 |
視圖是數(shù)據(jù)庫中的虛擬表。包含一系列帶有名稱的行和列數(shù)據(jù)。視圖是從一個(gè)或者多個(gè)表中導(dǎo)出的,視圖的行為與表非常相似,用戶可以使用SELECT語句查詢數(shù)據(jù),以及使用INSERT、UPDATE和DELETE修改記錄,視圖使用戶操作更加方便而且保障數(shù)據(jù)庫系統(tǒng)的安全。
視圖一旦定義便存儲(chǔ)在數(shù)據(jù)庫中,與其對應(yīng)的數(shù)據(jù)并沒有像表那樣在數(shù)據(jù)庫中再存儲(chǔ)一份,通過視圖看到的數(shù)據(jù)只是存放在基本表中的數(shù)據(jù)。對視圖的操作與對表的操作一樣,可以對其進(jìn)行查詢、修改和刪除。當(dāng)對通過視圖看到的數(shù)據(jù)進(jìn)行修改時(shí),相應(yīng)的基本表的數(shù)據(jù)也要發(fā)生變化,同時(shí)若基本表的數(shù)據(jù)放生變化,則這種變化也會(huì)自動(dòng)地反應(yīng)到視圖中。
創(chuàng)建視圖
創(chuàng)建視圖的基本語法格式為:CREATE [OR REPLACE] [ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}] VIEW view_name [(column_list)] AS SELECT_statement [WITH [CASCADED|LOCAL] CHECK OPTION] 其中CREATE用來創(chuàng)建新的視圖,REPLACE表示替換已經(jīng)創(chuàng)建的視圖,ALGORITHM表示視圖選擇的算法,view_name為視圖名稱,column_list為屬性列,SELECT_statement表示SELECT語句,WITH[CASCADED|LOCAL] CHECK OPTION參數(shù)表示視圖在更新時(shí)保證在視圖的權(quán)限范圍內(nèi)。
ALGORITHM的取值有3個(gè),分別是UNDEFINED|MERGE|TEMPTABLE,UNDEFINED表示MySQL將自動(dòng)選擇算法,MERGE表示將使用的視圖與視圖定義合并起來,使得視圖定義的某一部分取代語句對應(yīng)的部分,TEMPTABLE表示將視圖的結(jié)果存入臨時(shí)表,然后用臨時(shí)表來執(zhí)行語句。