一、視圖的概述
視圖(view)是一種虛擬存在的表冬念,視圖在數(shù)據(jù)庫(kù)中實(shí)際并不存在趁窃,視圖可以理解為一條select語(yǔ)句執(zhí)行后返回的結(jié)果集,因此在創(chuàng)建視圖時(shí)急前,實(shí)際主要是在創(chuàng)建這條select查詢語(yǔ)句上
二醒陆、視圖存在的意義
1)簡(jiǎn)單:使用視圖的用戶不需要關(guān)心后面對(duì)應(yīng)的表結(jié)構(gòu)、關(guān)聯(lián)條件和篩選條件裆针,對(duì)用戶來(lái)就是已經(jīng)過(guò)濾好的復(fù)合條件的結(jié)果集
2)安全:使用視圖刨摩,用戶只能查看到他們被允許看到的結(jié)果集寺晌,當(dāng)不允許用戶看到所有的表的信息時(shí),可以通過(guò)視圖為用戶展示他能所能看到的信息
3)數(shù)據(jù)獨(dú)立:一旦視圖結(jié)構(gòu)確定以后澡刹,可以屏蔽表結(jié)構(gòu)變化對(duì)用戶的影響呻征,源表的增加列對(duì)視圖沒(méi)有影響;源表修改表明罢浇,只需要修改對(duì)應(yīng)的視圖來(lái)解決對(duì)用戶的影響
三陆赋、視圖的創(chuàng)建或修改
1)創(chuàng)建視圖語(yǔ)法
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
2)修改視圖的語(yǔ)法為
ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
3)WITH選項(xiàng)說(shuō)明
選項(xiàng) :
WITH [CASCADED | LOCAL] CHECK OPTION 決定了是否允許更新數(shù)據(jù)使記錄不再滿足視圖的條件。
LOCAL : 只要滿足本視圖的條件就可以更新己莺。
CASCADED : 必須滿足所有針對(duì)該視圖的所有視圖的條件才可以更新奏甫。
示列:創(chuàng)建視圖
CREATE OR REPLACE VIEW city_country_view as select t.*,c.country_name from country c, city t where c.country_id = t.country_id;
4)查詢視圖
select * from city_country_view;
5)查看數(shù)據(jù)庫(kù)中存在視圖
#5.1之前:
SHOW VIEWS
#5.1之后不僅可以查看視圖同時(shí)也可以看到所有的表:
SHOW TABLES
6)查看視圖信息
SHOW TABLE STATUS like 'city_country_view';
7)查詢某個(gè)視圖的定義
SHOW CREATE VIEW city_country_view;
8)刪除視圖
語(yǔ)法:
DROP VIEW [IF EXISTS] view_name [, view_name] ...[RESTRICT | CASCADE]
示例 , 刪除視圖city_country_view :
DROP VIEW city_country_view;