我們又見面啦脖卖,今天我們將來學(xué)習(xí)如何用SQL進(jìn)行復(fù)雜查詢。在學(xué)習(xí)開始之前相恃,希望你明確四個(gè)概念:
是什么:這個(gè)知識(shí)點(diǎn)是什么?基本概念要知道笨觅;
如何用:如何使用到實(shí)際數(shù)據(jù)分析中拦耐;
有什么用:再怎樣的數(shù)據(jù)場(chǎng)景下使用這個(gè)知識(shí)耕腾;
注意事項(xiàng):這個(gè)知識(shí)點(diǎn)使用時(shí)需要注意那些規(guī)則和細(xì)節(jié)。
接下來杀糯,我們開始學(xué)習(xí)今天的內(nèi)容吧!
1.視圖
a.什么是視圖:
表:存放實(shí)際數(shù)據(jù)
視圖:基于 SQL 語句的結(jié)果集的可視化表扫俺,存放的是SQL查詢語句。詳細(xì)來說:
從用戶角度來看固翰,一個(gè)視圖是從一個(gè)特定的角度來查看數(shù)據(jù)庫中的數(shù)據(jù)狼纬。
從數(shù)據(jù)庫系統(tǒng)內(nèi)部來看,一個(gè)視圖是由SELECT語句組成的查詢定義的虛擬表骂际,當(dāng)查詢連接斷開時(shí)疗琉,這張?zhí)摂M表就會(huì)被自動(dòng)刪除。
從數(shù)據(jù)庫系統(tǒng)外部來看歉铝,視圖是由一張或多張表中的數(shù)據(jù)組成的盈简,視圖就如同一張表一樣,對(duì)表能夠進(jìn)行的一般操作都可以應(yīng)用于視圖太示,例如查詢柠贤,插入,修改类缤,刪除操作等臼勉。
需要注意的是:
視圖是一種數(shù)據(jù)庫對(duì)象,用戶可以象查詢普通表一樣查詢視圖呀非。
視圖內(nèi)其實(shí)沒有存儲(chǔ)任何數(shù)據(jù)坚俗,它只是對(duì)表的一個(gè)查詢。
視圖的定義保存在數(shù)據(jù)字典內(nèi)岸裙。創(chuàng)建視圖所基于的表為“基表”猖败。
視圖一經(jīng)定義以后,就可以像表一樣被查詢降允、修改恩闻、刪除和更新。
說了這么多剧董,是不是感覺都不是人話幢尚,沒關(guān)系,我們總結(jié)一下:
視圖包含行和列翅楼,是一張?zhí)摂M表尉剩,,但就像真正的表一樣毅臊。視圖中的字段是一個(gè)或多個(gè)數(shù)據(jù)庫中真實(shí)表中的字段理茎。
您可以添加 SQL 語句,在哪里添加,并將語句連接到視圖皂林,或者您可以呈現(xiàn)數(shù)據(jù)朗鸠,就像數(shù)據(jù)來自單個(gè)表一樣。
視圖是數(shù)據(jù)庫中一個(gè)比較重要的組成部分础倍,在隔離實(shí)體表的前提下還可以讓用戶查詢到需要的數(shù)據(jù)烛占,可以起到保護(hù)底層數(shù)據(jù)的作用。同時(shí)針對(duì)不同的人群沟启,視圖也可以起到簡(jiǎn)化用戶對(duì)數(shù)據(jù)的理解忆家。
b.如何創(chuàng)建視圖
CREATE VIEW語句
CREATE VIEW view_name(column_name1,column_name2,...)ASSELECT column_name(s) -- select子句使用在as關(guān)鍵字后面 FROM table_nameWHERE condition
注意:視圖總是顯示最新數(shù)據(jù)!每當(dāng)用戶查詢視圖時(shí)美浦,數(shù)據(jù)庫引擎就使用視圖的 SQL 語句重新構(gòu)建數(shù)據(jù)弦赖。
栗子:
CREATE VIEW 按性別匯總(性別,人數(shù))
AS
SELECT 性別,COUNT(*)
FROM student
GROUP BY 性別;
c.如何使用視圖
如果你在工作中需要經(jīng)常使用“按性別匯總”這個(gè)查詢,則可以不用每一次都去輸入一遍SQL語句浦辨,只要如上例所示蹬竖,創(chuàng)建一個(gè)視圖,并在from字句中使用視圖名稱代替表名稱流酬。
SELECT 性別,人數(shù)
FROM 按性別匯總;
對(duì)于重復(fù)性工作來說币厕,這簡(jiǎn)直太提高效率了,有木有芽腾?