全文大約【1297】字,不說(shuō)廢話,只講可以讓你學(xué)到技術(shù)、明白原理的純干貨!本文帶有豐富案例及配圖視頻,讓你更好的理解和運(yùn)用文中的技術(shù)概念,并可以給你帶來(lái)具有足夠啟迪的思考......
一. 視圖
1.什么是視圖
視圖,虛擬表,從一個(gè)表或多個(gè)表中查詢出來(lái)的表,作用和真實(shí)表一樣,包含一系列帶有行和列的數(shù)據(jù)。視圖中,用戶可以使用SELECT語(yǔ)句查詢數(shù)據(jù),也可以使用INSERT,UPDATE,DELETE修改記錄,視圖可以使用戶操作方便,并保障數(shù)據(jù)庫(kù)系統(tǒng)安全。
2.視圖特點(diǎn)
優(yōu)點(diǎn):
● 簡(jiǎn)單化,數(shù)據(jù)所見即所得。
● 安全性,用戶只能查詢或修改他們所能見到得到的數(shù)據(jù)。
● 邏輯獨(dú)立性,可以屏蔽真實(shí)表結(jié)構(gòu)變化帶來(lái)的影響。
缺點(diǎn):
● 性能相對(duì)較差,簡(jiǎn)單的查詢也會(huì)變得稍顯復(fù)雜。
● 修改不方便,特變是復(fù)雜的聚合視圖基本無(wú)法修改。
3.視圖的創(chuàng)建
下面小編給各位小伙伴介紹視圖的創(chuàng)建語(yǔ)法,as后面就是SELECT查詢的SQL語(yǔ)句。是不是很簡(jiǎn)單呢。
語(yǔ)法:CREATE VIEW 視圖名 AS 查詢數(shù)據(jù)源表語(yǔ)句;
舉個(gè)栗子:創(chuàng)建視圖。
#創(chuàng)建 v_student 的視圖,其視圖從 student 表中查詢到學(xué)生id和名字。
CREATE VIEW v_student AS select SId,Sname from student;
使用視圖其實(shí)和使用表沒(méi)啥區(qū)別,正常查詢就可以了。如下:
#查詢 v_student 視圖中所有學(xué)生。
SELECT * FROM v_student;
4.視圖的修改
語(yǔ)法一的意思是兼具視圖創(chuàng)建和修改的功能,視圖如果存在就修改,如果視圖不存在就創(chuàng)建視圖。而語(yǔ)法二只有修改功能。
語(yǔ)法一:CREATE OR REPLACE VIEW 視圖名 AS 查詢語(yǔ)句;
語(yǔ)法二:ALTER VIEW 視圖名 AS 查詢語(yǔ)句;
舉個(gè)栗子:修改視圖。
#方式 1:如果視圖存在則進(jìn)行修改,反之,進(jìn)行創(chuàng)建
CREATE OR REPLACE VIEW v_student AS SELECT SId,Sname,Sage from student;
#方式 2:直接對(duì)已存在的視圖進(jìn)行修改
ALTER VIEW v_student AS SELECT SId,Sname,Sage from student;
5. 視圖的刪除
下面這個(gè)最簡(jiǎn)單的語(yǔ)法就是刪除視圖的語(yǔ)法。小編友情提醒,使用起來(lái)要小心哦,刪了就沒(méi)了。
DROP VIEW 視圖名
舉個(gè)栗子:刪除視圖。
#刪除v_student視圖。
DROP VIEW v_student;
注意:刪除視圖不會(huì)影響原表。
6. 視圖的注意事項(xiàng)
注意:
● 視圖不會(huì)獨(dú)立存儲(chǔ)數(shù)據(jù),原表發(fā)生改變,視圖也發(fā)生改變。沒(méi)有優(yōu)化任何查詢性能。
● 如果視圖包含以下結(jié)構(gòu)中的一種,則視圖不可更新。
○ 聚合函數(shù)的結(jié)果。
○ DISTINCT 去重后的結(jié)果。
○ GROUP BY 分組后的結(jié)果。
○ HAVING 篩選過(guò)濾后的結(jié)果。
○ UNION、UNION ALL 聯(lián)合后的結(jié)果。
二. 結(jié)語(yǔ)
小編在這里對(duì)本文核心要點(diǎn)進(jìn)行總結(jié):
1.視圖是數(shù)據(jù)庫(kù)中簡(jiǎn)單實(shí)用的一種工具,可以將復(fù)雜的多表查詢封裝成視圖,在查詢的時(shí)候只需要簡(jiǎn)單的一個(gè)查詢就能得到想要的結(jié)果。
2.注意在創(chuàng)建視圖中包含聚合函數(shù)、DISTINCT 去重、GROUP BY 分組、HAVING 篩選、UNION ALL 查詢結(jié)果合并的時(shí)候,視圖不可以更新。