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