MySQL視圖的基本操作 |
視圖是數(shù)據(jù)庫中的虛擬表。包含一系列帶有名稱的行和列數(shù)據(jù)。視圖是從一個或者多個表中導出的,視圖的行為與表非常相似,用戶可以使用SELECT語句查詢數(shù)據(jù),以及使用INSERT、UPDATE和DELETE修改記錄,視圖使用戶操作更加方便而且保障數(shù)據(jù)庫系統(tǒng)的安全。
視圖一旦定義便存儲在數(shù)據(jù)庫中,與其對應的數(shù)據(jù)并沒有像表那樣在數(shù)據(jù)庫中再存儲一份,通過視圖看到的數(shù)據(jù)只是存放在基本表中的數(shù)據(jù)。對視圖的操作與對表的操作一樣,可以對其進行查詢、修改和刪除。當對通過視圖看到的數(shù)據(jù)進行修改時,相應的基本表的數(shù)據(jù)也要發(fā)生變化,同時若基本表的數(shù)據(jù)放生變化,則這種變化也會自動地反應到視圖中。
創(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ù)表示視圖在更新時保證在視圖的權限范圍內(nèi)。
ALGORITHM的取值有3個,分別是UNDEFINED|MERGE|TEMPTABLE,UNDEFINED表示MySQL將自動選擇算法,MERGE表示將使用的視圖與視圖定義合并起來,使得視圖定義的某一部分取代語句對應的部分,TEMPTABLE表示將視圖的結果存入臨時表,然后用臨時表來執(zhí)行語句。