第五章高級(jí)查詢(xún)_第1頁(yè)
第五章高級(jí)查詢(xún)_第2頁(yè)
第五章高級(jí)查詢(xún)_第3頁(yè)
第五章高級(jí)查詢(xún)_第4頁(yè)
第五章高級(jí)查詢(xún)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)查詢(xún)之(二)第五章1目標(biāo)使用LIKE、BETWEEN、IN進(jìn)行模糊查詢(xún)?cè)诓樵?xún)中使用聚合函數(shù)使用GROUPBY進(jìn)行分組查詢(xún)進(jìn)行多表聯(lián)結(jié)查詢(xún)2模糊查詢(xún)—LIKE查詢(xún)時(shí),字段中的內(nèi)容并不一定與查詢(xún)內(nèi)容完全匹配,只要字段中含有這些內(nèi)容SELECTSNameAS姓名FROMStudentsWHERESNameLIKE'張%'姓名張果老張飛張揚(yáng)出去思考:以下的SQL語(yǔ)句:SELECT*FROM數(shù)據(jù)表WHERE編號(hào)LIKE'00[^8]%[A,C]%‘可能會(huì)查詢(xún)出的編號(hào)值為()。A、9890ACDB、007_AFFC、008&DCGD、KK8C3通配符通配符解釋示例‘_’一個(gè)字符ALike'C_'%任意長(zhǎng)度的字符串BLike'CO_%'[]括號(hào)中所指定范圍內(nèi)的一個(gè)字符CLike'9W0[1-2]'[^]不在括號(hào)中所指定范圍內(nèi)的一個(gè)字符DLike‘%[A-D][^1-2]'4數(shù)據(jù)庫(kù)表記錄5模糊查詢(xún)—ISNULL把某一字段中內(nèi)容為空的記錄查詢(xún)出來(lái)SELECTSNameAs姓名,SAddressAS地址FROMStudentWHERESAddress

ISNULL姓名地址張果老NULL李尋歡NULL令狐沖NULL程靈素NULL……6模糊查詢(xún)—BETWEEN把某一字段中內(nèi)容在特定范圍內(nèi)的記錄查詢(xún)出來(lái)SELECTSno,degreeFROMSCoreWHEREdegree

BETWEEN60AND80SnoScore10164103921039210588……7模糊查詢(xún)—IN把某一字段中內(nèi)容與所列出的查詢(xún)內(nèi)容列表匹配的記錄查詢(xún)出來(lái)SELECTSNameAS學(xué)員姓名,SAddressAs地址FROMStudentWHERESAddress

IN

('北京','廣州','上海')學(xué)員姓名地址李揚(yáng)廣州于紫電上海李青霜北京司馬弓上?!?問(wèn)題成績(jī)表中存儲(chǔ)了所有學(xué)員的成績(jī),我想知道:學(xué)員的總成績(jī)、平均成績(jī)?cè)趺崔k?9聚合函數(shù)-1SUMAVGSELECTSUM(degree

)FROMScoreWHEREsno='105'SELECTSUM(degree),snoFROMScoreWHEREsno='105'×SELECTAVG(degree

)AS平均成績(jī)

FromScoreWHEREdegree

>=6010聚合函數(shù)-2MAX、MINCOUNTselectavg(degree)as平均成績(jī),max(degree)as最高分,min(degree)as最低分FromScoreWheredegree>=60SELECT

COUNT(*)

AS及格人數(shù)FromScoreWHEREdegree>=6011問(wèn)題如果不是統(tǒng)計(jì)所有人所有課程的總成績(jī)而是想求每一門(mén)課的平均績(jī)或者某個(gè)人的所有課的總成績(jī)?cè)趺崔k?12分組匯總這三個(gè)數(shù)取平均值第4-6分?jǐn)?shù)取平均值最后三個(gè)數(shù)取平均值有一個(gè)學(xué)員參加考試1314分組查詢(xún)—GROUPBYSELECT

cno,AVG(degree)

AS課程平均成績(jī)FROMScoreGROUPBY

cno15利用HAVING篩選結(jié)果表在實(shí)際使用中,往往還要對(duì)分組后的結(jié)果按某種條件再進(jìn)行篩選,而只輸出滿(mǎn)足用戶(hù)指定條件的記錄。在SQL中,HAVING子句能完成此功能?!癢HERE”子句與“HAVING”子句的區(qū)別在于作用對(duì)象不同:1、WHERE子句的作用對(duì)象是表,是從表中選擇出滿(mǎn)足篩選條件的記錄。2、HAVING子句的作用對(duì)象是組,是從組中選擇出滿(mǎn)足篩選條件的記錄。16【例5】查詢(xún)‘3-105’號(hào)課程的平均分。本例主要學(xué)習(xí)有關(guān)GROUPBY子句的表達(dá)式書(shū)寫(xiě)格式。

selectcno,avg(degree)fromscore

groupbycnohavingcno='3-105'17分組查詢(xún)WHEREGROUPBYHAVINGWHERE子句從數(shù)據(jù)源中去掉不符合其搜索條件的數(shù)據(jù)GROUPBY子句搜集數(shù)據(jù)行到各個(gè)組中,統(tǒng)計(jì)函數(shù)為各個(gè)組計(jì)算統(tǒng)計(jì)值HAVING子句去掉不符合其組搜索條件的各組數(shù)據(jù)行18多表聯(lián)結(jié)查詢(xún)—問(wèn)題學(xué)員內(nèi)部測(cè)試成績(jī)查詢(xún)的每次顯示的都是學(xué)員的編號(hào)信息,因?yàn)樵摫碇兄淮鎯?chǔ)了學(xué)員的編號(hào);實(shí)際上最好顯示學(xué)員的姓名,而姓名存儲(chǔ)在學(xué)員信息表;如何同時(shí)從這兩個(gè)表中取得數(shù)據(jù)?19多表聯(lián)結(jié)查詢(xún)—分類(lèi)內(nèi)聯(lián)結(jié)(INNERJOIN)外聯(lián)結(jié)——左外聯(lián)結(jié)(LEFTJOIN)——右外聯(lián)結(jié)(RIGHTJOIN)——完整外聯(lián)結(jié)(FULLJOIN)20SELECT S.SName,C.CNo,C.DegreeFrom ScoreASCINNERJOIN StudentASSON C.SNo=S.SNoScoreSNoCNodegree122300100100200297896776300381猜一猜:這樣寫(xiě),返回的查詢(xún)結(jié)果是一樣的嗎?SELECT S.SName,C.CNo,C.degreeFrom StudentASSINNERJOIN ScoreASCON C.SNo=S.SNo多表聯(lián)結(jié)查詢(xún)—內(nèi)聯(lián)結(jié)-1StundentSName梅超風(fēng)陳玄風(fēng)陸乘風(fēng)曲靈風(fēng)SNo1234查詢(xún)結(jié)果SName梅超風(fēng)陳玄風(fēng)陳玄風(fēng)陸乘風(fēng)CNodegree00100100200297896776陸乘風(fēng)0038121多表聯(lián)結(jié)查詢(xún)—內(nèi)聯(lián)結(jié)-2SELECTStudent.SName,Score.CNo,Score.DegreeFROM Student,ScoreWHERE

Student.SNo=Score.SNo22多表聯(lián)結(jié)查詢(xún)—三表聯(lián)結(jié)SELECT

S.SNameAS姓名,CS.CNameAS課程,C.DegreeAS成績(jī)FROMStudentASSINNERJOINScoreASCON(S.SNo=C.SNo)INNERJOINCourseASCSON(CS.CNo=C.CNo)23ScoreSNoCNoDegree122300100100200297896776300381多表聯(lián)結(jié)查詢(xún)—左外聯(lián)結(jié)StundentsSName梅超風(fēng)陳玄風(fēng)陸乘風(fēng)曲靈風(fēng)SNo1234查詢(xún)結(jié)果SName梅超風(fēng)陳玄風(fēng)陳玄風(fēng)陸乘風(fēng)CNoDegree00100100200297896776陸乘風(fēng)00381曲靈風(fēng)NULLNULLSELECT

S.SName,C.Cno,C.DegreeFrom

StudentASSLEFTJOIN ScoreASCON

C.SNo=S.SNo猜一猜:這樣寫(xiě),返回的查詢(xún)結(jié)果是一樣的嗎?SELECT

S.SName,C.CNo,C.DegreeFrom

ScoreASCLEFTJOIN

StudentASSON

C.SNo=S.SNo24多表聯(lián)結(jié)查詢(xún)—右外聯(lián)結(jié)SELECT S.SName,C.CNo,C.DegreeFrom ScoreASCRIGHTOUTERJOIN StudentASSON C.SNo=S.SNo25子查詢(xún)

子查詢(xún)就是包含在另一個(gè)查詢(xún)中的查詢(xún)。可以使用一個(gè)SELECT語(yǔ)句返回將由另一個(gè)SELECT語(yǔ)句使用的記錄,此時(shí)外部查詢(xún)稱(chēng)為“父查詢(xún)”,內(nèi)部查詢(xún)稱(chēng)為“子查詢(xún)”。子查詢(xún)包括兩種類(lèi)型:嵌套查詢(xún)相關(guān)查詢(xún)26什么是子查詢(xún)2-1問(wèn)題:編寫(xiě)T-SQL語(yǔ)句,查看年齡比“李軍”大的學(xué)員,要求顯示這些學(xué)員的信息?分析:

第一步:求出“李軍”的年齡(即生日比李軍早的學(xué)員,1975-10-2<1976-2-20);第二步:利用WHERE語(yǔ)句,篩選年齡比“李軍”大的學(xué)員;學(xué)員信息表27什么是子查詢(xún)2-2采用子查詢(xún)實(shí)現(xiàn)SELECT*FROMstudentWHEREsbirthday<(SELECTsbirthdayFROMstudentwheresName='李軍')子查詢(xún)子查詢(xún)?cè)赪HERE語(yǔ)句中的一般用法:SELECT…FROM表1WHERE字段1>(子查詢(xún))外面的查詢(xún)稱(chēng)為父查詢(xún),括號(hào)中嵌入的查詢(xún)稱(chēng)為子查詢(xún)UPDATE、INSERT、DELETE一起使用,語(yǔ)法類(lèi)似于SELECT語(yǔ)句

將子查詢(xún)和比較運(yùn)算符聯(lián)合使用,必須保證子查詢(xún)返回的值不能多于一個(gè)2829使用子查詢(xún)2-1問(wèn)題:查詢(xún)成績(jī)=60分的學(xué)員。學(xué)員信息表和成績(jī)表30使用子查詢(xún)2-2采用子查詢(xún)

SELECTsNameFROMstudentWHEREsNo=(SELECTsNoFROMscoreWHEREdegree=60)GO子查詢(xún)一般來(lái)說(shuō),表連接都可以用子查詢(xún)替換,但有的子查詢(xún)卻不能用表連接替換子查詢(xún)比較靈活、方便,常作為增刪改查的篩選條件,適合于操縱一個(gè)表的數(shù)據(jù)表連接更適合于查看多表的數(shù)據(jù)31使用IN或NOTIN的子查詢(xún)IN子查詢(xún)用于進(jìn)行一個(gè)給定值是否在子查詢(xún)結(jié)果集中的判斷,格式為:表達(dá)式[NOT]IN(子查詢(xún))當(dāng)表達(dá)式與子查詢(xún)的結(jié)果表中的某個(gè)值相等時(shí),IN謂詞返回TRUE,否則返回FALSE,若使用了NOT,則返回的值剛好相反?!纠?】查詢(xún)選修了課程號(hào)為3-105的學(xué)生情況。

select*fromstudentwheresnoin(selectsnofromscorewherecno='3-105')32EXISTS子查詢(xún)4-2IFEXISTS(子查詢(xún))語(yǔ)句EXISTS子查詢(xún)的語(yǔ)法:如果子查詢(xún)的結(jié)果非空,即記錄條數(shù)1條以上,則EXISTS(子查詢(xún))將返回真(true),否則返回假(false)EXISTS也可以作為WHERE語(yǔ)句的子查詢(xún),但一般都能用IN子查詢(xún)替換33EXISTS子查詢(xún)查找選修了3-105這門(mén)課的學(xué)生姓名

selectsnamefromstudentwhereexists(select*fromscorewher

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論