版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章數(shù)據(jù)檢索本章中我們將討論怎樣使用Transact-SQLSELECT語(yǔ)句從一個(gè)或多個(gè)表中獲取數(shù)據(jù)方法,然后使用WHERE來(lái)限定要返回?cái)?shù)據(jù)。在獲取了所需數(shù)據(jù)之后,我們還將介紹怎樣使用GROUPBY、HAVING、ORDERBY來(lái)規(guī)范化、組織這些數(shù)據(jù)。數(shù)據(jù)檢索主題知識(shí)講座第1頁(yè)第四章數(shù)據(jù)檢索*學(xué)習(xí)關(guān)鍵點(diǎn)*熟悉SELECT語(yǔ)法格式掌握WHERE、ORDERBY、GROUPBY、HAVING子句使用掌握基本多表查詢(xún)掌握內(nèi)連接、外連接、交叉連接和聯(lián)合查詢(xún)使用了解自連接使用掌握多行和單值子查詢(xún)使用了解嵌套子查詢(xún)使用數(shù)據(jù)檢索主題知識(shí)講座第2頁(yè)第四章數(shù)據(jù)檢索4.1select子句選擇目標(biāo)列4.2帶條件檢索4.3從多表中查詢(xún)數(shù)據(jù)1.union操作2.子查詢(xún)4.4select其它語(yǔ)法數(shù)據(jù)檢索主題知識(shí)講座第3頁(yè)4.1select子句選擇目標(biāo)列語(yǔ)法格式SELECTselect_list[INTOnew_table][FROMtable_source][WHEREsearch_condition][GROUPBYgroup_by_expression][HAVINGsearch_condition][ORDERBYorder_expression[ASC|DESC]][computebycomute_expression]數(shù)據(jù)檢索主題知識(shí)講座第4頁(yè)4.1select子句選擇目標(biāo)列1.能夠以常量為目標(biāo)列2.“*”表示選擇表或視圖中全部列3.能夠利用“as”或“=”定義列別名4.利用“distinct”消除結(jié)果集中重復(fù)行5.能夠輸出經(jīng)計(jì)算列值6.能夠使用case表示式查詢(xún)數(shù)據(jù)7.能夠利用“top”限制結(jié)果集返回行8.能夠?qū)δ繕?biāo)列使用聚集函數(shù)數(shù)據(jù)檢索主題知識(shí)講座第5頁(yè)4.1Select子句選擇目標(biāo)列1.以常量為目標(biāo)列
比如:select1數(shù)據(jù)檢索主題知識(shí)講座第6頁(yè)4.1Select子句選擇目標(biāo)列2.“*”表示選擇表或視圖中全部列,也能夠選擇一些列
比如:select*from班級(jí)信息表數(shù)據(jù)檢索主題知識(shí)講座第7頁(yè)4.1Select子句選擇目標(biāo)列3.能夠利用“as”或“=”定義列別名【例】查詢(xún)“班級(jí)信息表”中入學(xué)班級(jí)名稱(chēng)和人數(shù),結(jié)果中指定標(biāo)題分別為class_name,class_totalSelectclass_name=班級(jí)名稱(chēng),人數(shù)asclass_totalfrom班級(jí)信息表where入學(xué)年份like‘%%’數(shù)據(jù)檢索主題知識(shí)講座第8頁(yè)4.1Select子句選擇目標(biāo)列注意:1.當(dāng)自定義標(biāo)題中含有空格時(shí),必須用單引號(hào)將標(biāo)題括起來(lái)。2.不允許在where子句中使用列別名。數(shù)據(jù)檢索主題知識(shí)講座第9頁(yè)4.1Select子句選擇目標(biāo)列4.利用“distinct”消除結(jié)果集中重復(fù)行【例】查詢(xún)“班級(jí)信息表”中入年份和人數(shù)Select入年份,人數(shù)from班級(jí)信息表注意:distinct只寫(xiě)一次即可正確寫(xiě)法Selectdistinct
入年份,人數(shù)from班級(jí)信息表數(shù)據(jù)檢索主題知識(shí)講座第10頁(yè)4.1Select子句選擇目標(biāo)列5.能夠輸出經(jīng)計(jì)算列值【例】查詢(xún)各班級(jí)畢業(yè)年份。Select班級(jí)名稱(chēng),畢業(yè)年份=year(入年份)+4
from班級(jí)信息表符合實(shí)際情況嗎?數(shù)據(jù)檢索主題知識(shí)講座第11頁(yè)4.1Select子句選擇目標(biāo)列6.能夠使用case表示式查詢(xún)數(shù)據(jù)【例】查詢(xún)各班級(jí)畢業(yè)年份。Select班級(jí)名稱(chēng),畢業(yè)年份=casewhen班級(jí)名稱(chēng)like‘___1%’thenyear(入年份)+5elseyear(入年份)+4endfrom班級(jí)信息表數(shù)據(jù)檢索主題知識(shí)講座第12頁(yè)4.1Select子句選擇目標(biāo)列Case表示式格式說(shuō)明:CASEwhen條件1then表示式1when條件2then表示式2……
else表示式
end數(shù)據(jù)檢索主題知識(shí)講座第13頁(yè)4.1Select子句選擇目標(biāo)列7.能夠利用“top”限制結(jié)果集返回行Topexpression[percent]表示只能從查詢(xún)結(jié)果集返回指定第一組行貨指定百分比數(shù)目標(biāo)行。Expression能夠是指定數(shù)目或百分比數(shù)目標(biāo)行?!纠繉?duì)班級(jí)信息表,查詢(xún)表中前6行數(shù)據(jù)。selecttop6*from班級(jí)信息表數(shù)據(jù)檢索主題知識(shí)講座第14頁(yè)4.1Select子句選擇目標(biāo)列8.能夠?qū)δ繕?biāo)列使用聚集函數(shù)【例】統(tǒng)計(jì)班級(jí)信息表中總?cè)藬?shù)。selectsum(人數(shù))from班級(jí)信息表注意:sum(人數(shù))計(jì)算時(shí)忽略人數(shù)為null行。說(shuō)明:1.慣用聚集函數(shù)還有max,min,avg,count等,使用方法同sum。2.能夠用distinct去掉重復(fù)行統(tǒng)計(jì)。數(shù)據(jù)檢索主題知識(shí)講座第15頁(yè)【課堂練習(xí)】對(duì)班級(jí)信息表(班級(jí)名稱(chēng),入年份,所屬系別,專(zhuān)業(yè),人數(shù)),完成以下查詢(xún):1.統(tǒng)計(jì)“信息技術(shù)工程學(xué)院”班級(jí)數(shù)目和總?cè)藬?shù)。2.查詢(xún)?nèi)肯祫e,但只輸出前6個(gè)結(jié)果。3.查詢(xún)各班班級(jí)名稱(chēng)、專(zhuān)業(yè)和人數(shù),對(duì)人數(shù)按以下規(guī)則處理:若人數(shù)為空值,則輸出“還未招生”;若人數(shù)小于30,則輸出“微型班”;若人數(shù)在30與45之間,則輸出“正常班”;若人數(shù)在45以上,則輸出“超級(jí)班”。數(shù)據(jù)檢索主題知識(shí)講座第16頁(yè)【課堂練習(xí)】參考答案1.selectcount(all班級(jí)名稱(chēng)),sum(人數(shù))from班級(jí)信息表where所屬系別='信息技術(shù)工程學(xué)院‘2.selectdistincttop6所屬系別from班級(jí)信息表3.select班級(jí)名稱(chēng),專(zhuān)業(yè),班級(jí)性質(zhì)=casewhen人數(shù)isnullthen‘還未招生'when人數(shù)<30then'微型班'when人數(shù)>30and人數(shù)<45then'正常班'else'超級(jí)班'endfrom班級(jí)信息表數(shù)據(jù)檢索主題知識(shí)講座第17頁(yè)4.2帶條件檢索1.where子句檢索信息時(shí)能夠經(jīng)過(guò)where子句指定檢索條件。慣用查詢(xún)條件以下表所表示:數(shù)據(jù)檢索主題知識(shí)講座第18頁(yè)4.2帶條件檢索查詢(xún)條件運(yùn)算符意義比較=,>,<,>=-,<=,!=,<>,!>,!<;NOT+上述運(yùn)算符比較大小確定范圍BETWEENAND,NOTBETWEENAND判斷值是否在范圍內(nèi)確定集合IN,NOTIN判斷值是否為列表中值字符匹配LIKE,NOTLIKE判斷值是否與指定字符通配格式相符空值ISNULL,ISNOTNULL判斷值是否為空多重條件AND,OR,NOT用于多重條件判斷數(shù)據(jù)檢索主題知識(shí)講座第19頁(yè)4.2帶條件檢索說(shuō)明:(1)比較表示式中,數(shù)據(jù)類(lèi)型不能是text、ntext和images類(lèi)型。(2)null和notnull需要用“is”,而不是“=”。(3)模式匹配運(yùn)算以下,返回true或false。
[not]like‘<匹配串>’[ESCAPE‘<換碼字符>’]%:代表任意長(zhǎng)度字符串(長(zhǎng)度可為0)字符串。_:代表任意單個(gè)字符。[]:表示和方括號(hào)中列出任意一個(gè)字符相匹配。[^]:表示不在方括號(hào)中列出任意一個(gè)字符。數(shù)據(jù)檢索主題知識(shí)講座第20頁(yè)4.2帶條件檢索比如:a[cf-h]tion->action,aftion,agtion,ahtion[0-5]ch->0ch,1ch,2ch,3ch,4ch,5chAb[^pl]c->Abahc,Abqkcetc.Escape作用范圍是緊跟在其后字符。轉(zhuǎn)義字符能夠是程序員指定任意單個(gè)字符。數(shù)據(jù)檢索主題知識(shí)講座第21頁(yè)4.2帶條件檢索【練習(xí)】對(duì)班級(jí)信息表(班級(jí)名稱(chēng),入學(xué)年份,所屬系別,專(zhuān)業(yè),人數(shù))完成以下查詢(xún):1.查詢(xún)9月份以后入學(xué)班級(jí)信息。2.查詢(xún)班級(jí)名稱(chēng)中包含下劃線班級(jí)名稱(chēng)和專(zhuān)業(yè)。3.查詢(xún)所屬系別尚不確定班級(jí)名稱(chēng)。4.查詢(xún)班級(jí)名稱(chēng)中倒數(shù)第2個(gè)字符為1,且倒數(shù)第1個(gè)字符在1~5之間班級(jí)信息。數(shù)據(jù)檢索主題知識(shí)講座第22頁(yè)4.2帶條件檢索1.select*from班級(jí)信息表where入年份>='-9-30'2.
select*from班級(jí)信息表where班級(jí)名稱(chēng)like'%1_%'escape'1'3.
select班級(jí)數(shù)目=count(*)from班級(jí)信息表where所屬系別isnull4.select*from班級(jí)信息表where班級(jí)名稱(chēng)like‘%1[1-5]’數(shù)據(jù)檢索主題知識(shí)講座第23頁(yè)4.2帶條件檢索2.group…h(huán)aving子句
GROUPBY[ALL]列名[,列名]…[WITH{CUBE|ROLLUP}][HAVING
篩選條件表示式]having子句也能指定查詢(xún)條件,使用與where子句類(lèi)似。使用WITHCUBE會(huì)對(duì)GROUPBY所列出全部分組字段進(jìn)行匯總運(yùn)算
。使用WITHROLLUP會(huì)對(duì)GROUPBY所列出第一個(gè)分組字段進(jìn)行匯總運(yùn)算
。數(shù)據(jù)檢索主題知識(shí)講座第24頁(yè)4.2帶條件檢索使用GROUPBY
子句時(shí),應(yīng)注意SQLServer
將為每一組計(jì)算一個(gè)匯總值,并把匯總值保留在一個(gè)字段中。對(duì)于指定一組,SQLServer
只生成一條統(tǒng)計(jì),不返回詳細(xì)信息。SQLServer
只對(duì)滿(mǎn)足WHERE
子句統(tǒng)計(jì)進(jìn)行分組和匯總。不要對(duì)可能包含空值字段使用GROUPBY
子句,因?yàn)榭罩狄矊⒈豢闯梢唤M,而不論統(tǒng)計(jì)是否滿(mǎn)足WHERE
子句條件。數(shù)據(jù)檢索主題知識(shí)講座第25頁(yè)4.2帶條件檢索【例1】查詢(xún)總?cè)藬?shù)多于200人學(xué)院名稱(chēng)和人數(shù)。Select所屬系別,總?cè)藬?shù)=sum(人數(shù))
from班級(jí)信息表groupby所屬系別havingsum(人數(shù))>200【例2】查詢(xún)1996年以后入學(xué)總?cè)藬?shù)多于200人學(xué)院名稱(chēng)和人數(shù)。Select所屬系別,總?cè)藬?shù)=sum(人數(shù))
from班級(jí)信息表where入年份>’1996-12-31’
groupby所屬系別havingsum(人數(shù))>200數(shù)據(jù)檢索主題知識(shí)講座第26頁(yè)4.2帶條件檢索【例3】統(tǒng)計(jì)每個(gè)學(xué)院每年入學(xué)總?cè)藬?shù)超出40人入年份、所屬系別和總?cè)藬?shù)。Select入年份,所屬系別,總?cè)藬?shù)=sum(人數(shù))from班級(jí)信息表groupby入年份,所屬系別
withcubeHavingSum(人數(shù))>40數(shù)據(jù)檢索主題知識(shí)講座第27頁(yè)4.2帶條件檢索Select入年份,所屬系別,總?cè)藬?shù)=sum(人數(shù))from班級(jí)信息表groupby入年份,所屬系別
withrollupHavingSum(人數(shù))>40注:NULL值表示兩屬性全部值,即全部學(xué)生和。數(shù)據(jù)檢索主題知識(shí)講座第28頁(yè)4.2帶條件檢索3.compute及computeby子句COMPUTE子句對(duì)查詢(xún)結(jié)果集中全部統(tǒng)計(jì)進(jìn)行匯總統(tǒng)計(jì),并顯示全部參加匯總統(tǒng)計(jì)詳細(xì)信息。當(dāng)與by一起使用時(shí),COMPUTE子句在結(jié)果集內(nèi)生成控制中止和小計(jì)。可在同一查詢(xún)內(nèi)指定COMPUTE
BY和COMPUTE。使用語(yǔ)法格式為:
COMPUTE
聚合函數(shù)(列名)[BY
列名]計(jì)算依據(jù)列表中全部表示式也必須同時(shí)出現(xiàn)在排序依據(jù)列表中。數(shù)據(jù)檢索主題知識(shí)講座第29頁(yè)4.2帶條件檢索【例】查詢(xún)班級(jí)名稱(chēng)為“計(jì)**”班級(jí)并按入年份分別計(jì)算它們總?cè)藬?shù),最終計(jì)算出全部符合查詢(xún)條件班級(jí)總?cè)藬?shù)。Select班級(jí)名稱(chēng),入年份,人數(shù)From班級(jí)信息表Where班級(jí)名稱(chēng)like‘計(jì)%’orderby入年份Computesum(人數(shù))by入年份Computesum(人數(shù))數(shù)據(jù)檢索主題知識(shí)講座第30頁(yè)4.2帶條件檢索數(shù)據(jù)檢索主題知識(shí)講座第31頁(yè)4.2帶條件檢索COMPUTEBY子句使得用同一個(gè)SELECT語(yǔ)句既查看明細(xì)行,又查看匯總行。能夠計(jì)算子組匯總值,也能夠計(jì)算整個(gè)結(jié)果集匯總值。COMPUTE所生成匯總值在查詢(xún)結(jié)果中顯示為單獨(dú)結(jié)果集。數(shù)據(jù)檢索主題知識(shí)講座第32頁(yè)4.2帶條件檢索4.Groupby與computeby比較GROUPBY生成單個(gè)結(jié)果集。每個(gè)組都有一個(gè)只包含分組依據(jù)列和顯示該組子聚合聚合函數(shù)行。選擇列表只能包含分組依據(jù)列和聚合函數(shù)。COMPUTE生成多個(gè)結(jié)果集。一個(gè)結(jié)果集包含每個(gè)組明細(xì)行,其中包含選擇列表中表示式。另一個(gè)結(jié)果集包含組子聚合,或SELECT語(yǔ)句總聚合。選擇列表可包含除分組依據(jù)列或聚合函數(shù)之外其它表示式。聚合函數(shù)在COMPUTE子句中指定,而不是在選擇列表中指定。數(shù)據(jù)檢索主題知識(shí)講座第33頁(yè)4.2帶條件檢索Select班級(jí)名稱(chēng),入年份,人數(shù)From班級(jí)信息表Where班級(jí)名稱(chēng)like'計(jì)%'orderby入年份Computesum(人數(shù))by入年份Select入年份,sum(人數(shù))From班級(jí)信息表Where班級(jí)名稱(chēng)like'計(jì)%’groupby入年份orderby入年份數(shù)據(jù)檢索主題知識(shí)講座第34頁(yè)數(shù)據(jù)檢索主題知識(shí)講座第35頁(yè)4.2帶條件檢索注意:1.Orderby與groupby子句連用放在最終,也能夠不用。2.Orderby與compute
by子句連用放在前面,且必須使用。3.聚集函數(shù)與groupby連用放在select子句中;4.聚集函數(shù)與computeby連用放在compute子句中。數(shù)據(jù)檢索主題知識(shí)講座第36頁(yè)【課堂練習(xí)】1查詢(xún)每個(gè)學(xué)院班級(jí)總數(shù)。2按學(xué)院和入年份分組,統(tǒng)計(jì)總?cè)藬?shù)。3匯總每年入學(xué)人數(shù)超出100專(zhuān)業(yè),并按入學(xué)人數(shù)升序排序4匯總每個(gè)學(xué)院總?cè)藬?shù)以及全部學(xué)???cè)藬?shù)。5匯總每個(gè)專(zhuān)業(yè)總?cè)藬?shù)以及按班級(jí)和入年份人數(shù)小計(jì)6返回計(jì)算機(jī)專(zhuān)業(yè)班級(jí)名稱(chēng)和入年份7按專(zhuān)業(yè)分組返回每個(gè)班級(jí)信息以及各班級(jí)人數(shù)總和對(duì)班級(jí)信息表(班級(jí)名稱(chēng),入年份,所屬系別,專(zhuān)業(yè),人數(shù))完成以下查詢(xún):數(shù)據(jù)檢索主題知識(shí)講座第37頁(yè)1.select所屬系別,總班數(shù)=count(*)from班級(jí)信息表groupby所屬系別2.Select入年份,所屬系別,總?cè)藬?shù)=sum(人數(shù))from班級(jí)信息表groupby所屬系別,入年份withcube3.數(shù)據(jù)檢索主題知識(shí)講座第38頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)在實(shí)際查詢(xún)應(yīng)用中,用戶(hù)所需要數(shù)據(jù)并不全部都在一個(gè)表或視圖中,而在多個(gè)表中,這時(shí)就要使用多表查詢(xún)。多表查詢(xún)用多個(gè)表中數(shù)據(jù)來(lái)組合,再?gòu)闹蝎@取出所需要數(shù)據(jù)信息。多表查詢(xún)實(shí)際上是經(jīng)過(guò)各個(gè)表之間共同列相關(guān)性來(lái)查詢(xún)數(shù)據(jù),是數(shù)據(jù)庫(kù)查詢(xún)最主要特征。數(shù)據(jù)檢索主題知識(shí)講座第39頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)1.連接查詢(xún)2.嵌套查詢(xún)3.union及其它集合操作數(shù)據(jù)檢索主題知識(shí)講座第40頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)1.連接查詢(xún)(1)使用連接謂詞(2)使用join關(guān)鍵字?jǐn)?shù)據(jù)檢索主題知識(shí)講座第41頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)(1)使用連接謂詞在where子句中使用比較運(yùn)算符給出連接條件對(duì)表進(jìn)行連接,稱(chēng)為連接謂詞表示形式。比較運(yùn)算符分為<,<=,>,>=,<>,=,!<,!>,!=。當(dāng)比較符為“=”時(shí)就是等值連接。若在結(jié)果中去掉同名屬性就是自然連接。數(shù)據(jù)檢索主題知識(shí)講座第42頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)【例】查詢(xún)計(jì)0602班學(xué)生基本情況。Selecta.*from學(xué)生信息表a,班級(jí)信息表b
wherea.所在班級(jí)=b.班級(jí)名稱(chēng)and班級(jí)名稱(chēng)=‘計(jì)0602’注意:一旦指定了表別名,在整個(gè)SELECE中都必語(yǔ)句中須使用別名來(lái)代替表名。數(shù)據(jù)檢索主題知識(shí)講座第43頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)當(dāng)一個(gè)表與其自已進(jìn)行連接操作時(shí),稱(chēng)為表本身連接。要查詢(xún)內(nèi)容均在同一表中,能夠?qū)⒈矸謩e取兩個(gè)別名,一個(gè)是X,一個(gè)是Y。將X,Y中滿(mǎn)足查詢(xún)條件行連接起來(lái)。這實(shí)際上是同一表本身連接?!纠坎樵?xún)大于“王楠”學(xué)號(hào)學(xué)生基本信息。SelectX.*from學(xué)生信息表X,學(xué)生信息表YwhereX.學(xué)號(hào)>Y.學(xué)號(hào)andY.姓名=‘王楠’數(shù)據(jù)檢索主題知識(shí)講座第44頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)(2)使用join關(guān)鍵字內(nèi)連接(INNERJOIN)左連接(LEFTOUTERJOIN)右連接(RIGHTOUTERJOIN)全連接(FULLJION)SELECT<選擇列表>FROM<左側(cè)源表>連接操作符<右側(cè)源表>ON<連接條件>WHERE<條件表示式>數(shù)據(jù)檢索主題知識(shí)講座第45頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)外連接是連接運(yùn)算擴(kuò)展。有三種:左外連接,右外連接和全外連接。左外連接取出左側(cè)關(guān)系中全部與右側(cè)關(guān)系中任一元組都不匹配元組,用空值null充填全部來(lái)自右側(cè)關(guān)系屬性,組成新元組,將其加入到自然連接結(jié)果中。右外連接將上述描述中左改為右即可。全外連接同時(shí)完成左外連接和右外連接操作。數(shù)據(jù)檢索主題知識(shí)講座第46頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)A)查詢(xún)有班級(jí)學(xué)生姓名和班級(jí)信息B)查詢(xún)?nèi)繉W(xué)生姓名和班級(jí)信息C)查詢(xún)?nèi)堪嗉?jí)信息及對(duì)應(yīng)學(xué)生姓名D)查詢(xún)?nèi)繉W(xué)生信息和全部班級(jí)信息數(shù)據(jù)檢索主題知識(shí)講座第47頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)A)selecta.*,b.*from學(xué)生信息表ajoin
班級(jí)信息表bona.所在班級(jí)=b.班級(jí)名稱(chēng)數(shù)據(jù)檢索主題知識(shí)講座第48頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)B)selecta.*,b.*from學(xué)生信息表aleftjoin
班級(jí)信息表bona.所在班級(jí)=b.班級(jí)名稱(chēng)數(shù)據(jù)檢索主題知識(shí)講座第49頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)C)selecta.*,b.*from學(xué)生信息表arightjoin班級(jí)信息表bona.所在班級(jí)=b.班級(jí)名稱(chēng)數(shù)據(jù)檢索主題知識(shí)講座第50頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)D)selecta.*,b.*from學(xué)生信息表afulljoin班級(jí)信息表bona.所在班級(jí)=b.班級(jí)名稱(chēng)數(shù)據(jù)檢索主題知識(shí)講座第51頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)2.嵌套查詢(xún)
在WHERE子句中包含一個(gè)形如SELECT-FROM-WHERE查詢(xún)塊,此查詢(xún)塊稱(chēng)為子查詢(xún)或嵌套查詢(xún),包含子查詢(xún)語(yǔ)句稱(chēng)為父查詢(xún)或外部查詢(xún)。(1)當(dāng)子查詢(xún)返回值只有一個(gè)時(shí),能夠使用比較運(yùn)算符(=,>,<,>=,<=,!=)將父查詢(xún)和子查詢(xún)連接起來(lái)。(2)假如子查詢(xún)返回值不止一個(gè),而是一個(gè)集合時(shí),則不能直接使用比較運(yùn)算符,能夠在比較運(yùn)算符和子查詢(xún)之間插入ANY或ALL,也能夠用in或notin。數(shù)據(jù)檢索主題知識(shí)講座第52頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)2.嵌套查詢(xún)1.使用比較運(yùn)算符使用ANY.使用IN.使用ALL.使用EXISTS數(shù)據(jù)檢索主題知識(shí)講座第53頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)2.嵌套查詢(xún)【例1】查詢(xún)與自0801班人數(shù)相同其它班級(jí)信息。Select*from班級(jí)信息表where人數(shù)=(select人數(shù)from班級(jí)信息表where班級(jí)名稱(chēng)=‘自0801’【例2】查詢(xún)計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)班級(jí)名稱(chēng)和人數(shù)。Select班級(jí)名稱(chēng),人數(shù)from班級(jí)信息表where班級(jí)名稱(chēng)=any(select班級(jí)名稱(chēng)from班級(jí)信息表wehre專(zhuān)業(yè)=‘計(jì)算機(jī)科學(xué)與技術(shù)’)數(shù)據(jù)檢索主題知識(shí)講座第54頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)【例3】查詢(xún)年紀(jì)大于全部女同年紀(jì)男同學(xué)姓名。Select姓名from學(xué)生信息表where年紀(jì)>all(select年紀(jì)from學(xué)生信息表where性別=0)【例4】查詢(xún)“信息技術(shù)工程學(xué)院”學(xué)生學(xué)號(hào)和姓名。Select學(xué)號(hào),姓名from學(xué)生信息表a
whereexists(select*from班級(jí)信息表bwherea.所在班級(jí)=b.班級(jí)名稱(chēng))數(shù)據(jù)檢索主題知識(shí)講座第55頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)【例5】查詢(xún)選修了全部已開(kāi)課程學(xué)生姓名。Select姓名from學(xué)生信息表awherenotexists(select*from開(kāi)課信息表b
whereNotexists(select*from成績(jī)表c
whereC.開(kāi)課編號(hào)=b.開(kāi)課編號(hào)andc.學(xué)號(hào)=a.學(xué)號(hào)))數(shù)據(jù)檢索主題知識(shí)講座第56頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)3.union(并)及其它集合操作經(jīng)過(guò)union操作能夠把兩個(gè)或兩個(gè)以上查詢(xún)結(jié)果合并到一個(gè)結(jié)果集中。Union是一個(gè)二元運(yùn)算,對(duì)包含兩個(gè)以上查詢(xún)表示式必須增加()來(lái)指定求值次序。不然按照從左到右次序運(yùn)算。Union子句能夠出現(xiàn)在insert-select命令中,但不能出現(xiàn)在createview命令或子查詢(xún)中。與union類(lèi)似操作還有intersect(交)和except(差)。數(shù)據(jù)檢索主題知識(shí)講座第57頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)【例】增加“教師信息表”,包含屬性:教師工號(hào),姓名,年紀(jì),性別,職稱(chēng),所屬系別。查詢(xún)?nèi)拷處熀蛯W(xué)生姓名。查詢(xún)與學(xué)生重名教師姓名。查詢(xún)沒(méi)在學(xué)生姓名集中沒(méi)出現(xiàn)教師姓名。數(shù)據(jù)檢索主題知識(shí)講座第58頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)Select姓名from學(xué)生信息表Union
Select姓名from教師信息表Select姓名from學(xué)生信息表intersect
Select姓名from教師信息表Select姓名from學(xué)生信息表exceptSelect姓名from教師信息表數(shù)據(jù)檢索主題知識(shí)講座第59頁(yè)4.3從多個(gè)表中查詢(xún)數(shù)據(jù)注意:使用union這類(lèi)操作符,必須確保兩個(gè)select子句中目標(biāo)列個(gè)數(shù)和類(lèi)型完全一致。數(shù)據(jù)檢索主題知識(shí)講座第60頁(yè)4.4select其它語(yǔ)法1.into子句2.from子句3.SETROWCOUNTn4.控制結(jié)果顯示寬度數(shù)據(jù)檢索主題知識(shí)講座第61頁(yè)4.4select其它語(yǔ)法1.into子句使用into子句能夠?qū)elect查詢(xún)所得到結(jié)果保留到一個(gè)新建表中。Intonew_tableInto子句select語(yǔ)句執(zhí)行后所創(chuàng)建表結(jié)構(gòu)由select所選擇列決定。新創(chuàng)建表中元組由select查詢(xún)結(jié)果決定。數(shù)據(jù)檢索主題知識(shí)講座第62頁(yè)4.4select其它語(yǔ)法【例】由學(xué)生信息表創(chuàng)建student表,包含學(xué)號(hào)和姓名。Select學(xué)號(hào)sno,姓名sname
intostudentfrom學(xué)生信息表數(shù)據(jù)檢索主題知識(shí)講座第63頁(yè)4.4select其它語(yǔ)法2.from子句From子句中也可以使用子查詢(xún)。必須使用as關(guān)鍵字為子查詢(xún)產(chǎn)生中間表定義一個(gè)別名。子查詢(xún)用于from子句時(shí),也可認(rèn)為列指定別名,但必須全部指出。數(shù)據(jù)檢索主題知識(shí)講座第64頁(yè)4.4select其它語(yǔ)法【例1】查詢(xún)總?cè)藬?shù)大于35人信息技術(shù)工程學(xué)院班級(jí)名稱(chēng)和專(zhuān)業(yè)。Select班級(jí)名稱(chēng),專(zhuān)業(yè)from(select*from
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上外版選擇性必修3生物上冊(cè)月考試卷含答案
- 2025年新科版九年級(jí)歷史下冊(cè)月考試卷
- 2025年浙教版選修4地理下冊(cè)月考試卷
- 2025年教科新版選修2地理下冊(cè)階段測(cè)試試卷
- 二零二五年度廣告宣傳攝影合同范本4篇
- 二零二五年度農(nóng)資質(zhì)量安全追溯體系建設(shè)合同3篇
- 二零二五年度牛場(chǎng)環(huán)保設(shè)施建設(shè)與運(yùn)營(yíng)合同范本4篇
- 2025年度文物拍賣(mài)合同標(biāo)準(zhǔn)版4篇
- 二零二五年度2025版木材加工廢棄物回收利用合同4篇
- 護(hù)工合同范本(2篇)
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- (正式版)SJT 11449-2024 集中空調(diào)電子計(jì)費(fèi)信息系統(tǒng)工程技術(shù)規(guī)范
- 廣州綠色金融發(fā)展現(xiàn)狀及對(duì)策的研究
- 《近現(xiàn)代史》義和團(tuán)運(yùn)動(dòng)
- 人教版四年級(jí)上冊(cè)加減乘除四則混合運(yùn)算300題及答案
- 合成生物學(xué)技術(shù)在生物制藥中的應(yīng)用
- 消化系統(tǒng)疾病的負(fù)性情緒與心理護(hù)理
- 高考語(yǔ)文文學(xué)類(lèi)閱讀分類(lèi)訓(xùn)練:戲劇類(lèi)(含答案)
- 協(xié)會(huì)監(jiān)事會(huì)工作報(bào)告大全(12篇)
- WS-T 813-2023 手術(shù)部位標(biāo)識(shí)標(biāo)準(zhǔn)
- 同意更改小孩名字協(xié)議書(shū)
評(píng)論
0/150
提交評(píng)論