數(shù)據(jù)庫第5章 查詢補充_第1頁
數(shù)據(jù)庫第5章 查詢補充_第2頁
數(shù)據(jù)庫第5章 查詢補充_第3頁
數(shù)據(jù)庫第5章 查詢補充_第4頁
數(shù)據(jù)庫第5章 查詢補充_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1Select 語句語句SQL語言2Select子句子句 *與屬性列表與屬性列表星號星號 * * 表示所有屬性表示所有屬性n星號星號 * * :按關(guān)系模式中屬性的順序:按關(guān)系模式中屬性的順序排列排列n顯式列出屬性名:按用戶順序排列顯式列出屬性名:按用戶順序排列Select * From Student3Select子句子句更名更名為結(jié)果集中的某個屬性改名為結(jié)果集中的某個屬性改名使結(jié)果集更具可讀性使結(jié)果集更具可讀性Select sno as 學(xué)號,cno as 課程號,grade as 成績From SCSelect sno,sname,2011- sage as birthday_YearFr

2、om Student4Where 子句子句查詢滿足指定條件的元組可以通過查詢滿足指定條件的元組可以通過Where子句來實現(xiàn)子句來實現(xiàn)使使where子句中的邏輯表達式返回子句中的邏輯表達式返回True值值的元組,是符合要求的元組,將被選擇的元組,是符合要求的元組,將被選擇出來出來5Where 子句子句運算符運算符比較:比較:、=、=、 等等確定范圍:確定范圍:Between A and B、Not Between A and B確定集合:確定集合:IN、NOT IN字符匹配:字符匹配:LIKE空值:空值:IS NULL、IS NOT NULL多重條件:多重條件:AND、OR、6Where 子句子

3、句Like字符匹配:字符匹配:Like、Not Like通配符通配符n% 匹配任意字符串匹配任意字符串n_ 匹配任意一個字符匹配任意一個字符大小寫敏感大小寫敏感7Where 子句子句Like例:列出姓張的學(xué)生的學(xué)號、姓名。例:列出姓張的學(xué)生的學(xué)號、姓名。Select sno,snameFrom StudentWhere sname LIKE 張張%例:列出張姓且單名的學(xué)生的學(xué)號、姓名。例:列出張姓且單名的學(xué)生的學(xué)號、姓名。Select sno,snameFrom StudentWhere sname LIKE 張張_8Where 子句子句distinctDistinct 是去掉重復(fù)的記錄是去掉

4、重復(fù)的記錄(元組元組)例:列出選課學(xué)生的學(xué)號。例:列出選課學(xué)生的學(xué)號。 Select distinct sno from sc; 9Where 子句子句betweenand例:列出年紀在例:列出年紀在18歲到歲到20歲之間的學(xué)生的姓歲之間的學(xué)生的姓名。名。Select snameFrom StudentWhere sage between 18 and 20;等價于 Select sname From StudentWhere sage =18 and sage=20;10Where 子句子句not betweenand例:列出年紀不在例:列出年紀不在18歲到歲到20歲之間的學(xué)生的歲之間的學(xué)生

5、的姓名。姓名。Select snameFrom StudentWhere sage not between 18 and 20;等價于 Select sname From StudentWhere sage 20;11空值查詢空值查詢例:查詢例:查詢c01課程成績不為課程成績不為NULL值值(不為空不為空)的學(xué)號和成績。的學(xué)號和成績。Select Sno, Grade From SC Where Grade is not NULL;12or查詢查詢例:請查詢選修了例:請查詢選修了c01或或c02的學(xué)生的學(xué)號。的學(xué)生的學(xué)號。Select Sno From SC Where cno=c01 or

6、cno=c02;13多表查詢多表查詢列出將被查詢的關(guān)系表列出將被查詢的關(guān)系表例:列出所有學(xué)生的學(xué)號、姓名、課號、成績。例:列出所有學(xué)生的學(xué)號、姓名、課號、成績。Select Sudent.sno,sname,SC.cno,gradeFrom student,SCWhere Student.sno = SC.sno14多表查詢多表查詢例:列出所有學(xué)生的學(xué)號、姓名、課程號、課程例:列出所有學(xué)生的學(xué)號、姓名、課程號、課程名,成績。名,成績。Select Sudent.sno, sname, SC.cno, cname, gradeFrom student, Course, SCWhere Stude

7、nt.sno = SC.snoAnd Co=SC.cno15Order By子句子句指定結(jié)果集中元組的排列次序指定結(jié)果集中元組的排列次序耗時耗時ASC升序(缺?。?、升序(缺省)、DESC降序降序例:列出例:列出CS系中的男生的學(xué)號、姓名、年系中的男生的學(xué)號、姓名、年齡,并按年齡進行排列(升序)齡,并按年齡進行排列(升序)Select sno, sname,sageFrom StudentWhere sdept = CS and ssex=mOrder By sage ASC 16練習(xí)例例: :查詢選修查詢選修c05c05課程,并且年齡不大于課程,并且年齡不大于 2121歲的學(xué)生的學(xué)號和成績,并

8、按成績降歲的學(xué)生的學(xué)號和成績,并按成績降序排列。序排列。 Select student.sno, grade from sc , student where cno=c05 and sage、=、=、=、 例:找出與例:找出與001同齡的學(xué)生同齡的學(xué)生Select *From StudentWhere sage = ( Select sage From Student Where sno = 001 )子查詢子查詢單值比較單值比較練習(xí)例:找出跟王倩在同一個系的所有學(xué)生的姓名。例:找出跟王倩在同一個系的所有學(xué)生的姓名。Select Sname From Student Where Sdept=(

9、Select Sdept From Student Where Sname=王倩王倩 )20子查詢返回子查詢返回多行一列多行一列運算符:運算符:In、All子查詢子查詢多值多值21若值與子查詢返回集中的某一個相等,則返回truen IN 被用來測試多值中的成員被用來測試多值中的成員例:查詢選修例:查詢選修C01課程的學(xué)生的學(xué)號、姓名。課程的學(xué)生的學(xué)號、姓名。Select sno,snameFrom StudentWhere sno IN (Select sno From SCWhere cno = C01 )子查詢子查詢多行一列多行一列子查詢子查詢多值成員多值成員In22例:例: 查詢選修了查

10、詢選修了 數(shù)據(jù)庫數(shù)據(jù)庫的學(xué)生的學(xué)號和姓名的學(xué)生的學(xué)號和姓名Select sno,snameFrom StudentWhere sno IN ( Select sno From SC Where cno IN ( Select cnoFrom CourseWhere cname = 數(shù)據(jù)庫)子查詢子查詢多值成員多值成員In23多值比較:多值比較:多行一列多行一列n父查詢與多值子查詢之間的比較用父查詢與多值子查詢之間的比較用All來連接來連接n值值s比子查詢返回集比子查詢返回集R中的每個都大時,中的每個都大時,sAll R 為為True nAll表示所有表示所有n all、 all、=all、 a

11、lln all 等價于等價于 not in例:找出年齡最小的學(xué)生例:找出年齡最小的學(xué)生Select * From Student Where sage = all (Select sage From Student )子查詢子查詢多值比較多值比較 ALL24例:檢索c01課程成績最低的學(xué)號Select SnoFrom SCWhere Cno=c01And grade=19歲的女生記錄并插入到表歲的女生記錄并插入到表f_student中中. Insert into f_student select * from student where sage=19 and ssex=f;數(shù)據(jù)更新數(shù)據(jù)更新插

12、入子查詢結(jié)果插入子查詢結(jié)果28n把一列中的值進行聚合運算,返回單值的函數(shù)把一列中的值進行聚合運算,返回單值的函數(shù)n五個預(yù)定義的聚合函數(shù)五個預(yù)定義的聚合函數(shù)w平均值:平均值:Avg( )Avg( )w總和:總和: Sum( )Sum( )w最小值:最小值:Min( )Min( )w最大值:最大值:Max( )Max( )w計數(shù):計數(shù): CountCount( ) 返回所選列中不為返回所選列中不為NULL的數(shù)的數(shù)據(jù)個數(shù)據(jù)個數(shù)nCount(Count(* *) )、Count(DistinctCount(Distinct) )數(shù)值數(shù)值聚合函數(shù)聚合函數(shù)29練習(xí):例:統(tǒng)計數(shù)據(jù)庫不及格的人數(shù)。例:統(tǒng)計數(shù)據(jù)

13、庫不及格的人數(shù)。select count(*)from scwhere grade60and cno=( select cno from course where cname=數(shù)據(jù)庫數(shù)據(jù)庫);30練習(xí):例:請查找出c05這門課程的最高分,最低分,平均分,總分以及選課人數(shù),并使用更名 Select max(grade) 最高分, min(grade) 最低分, avg(grade) 平均分, sum(grade) 總分, count(*) 選課人數(shù) from sc where cno=c0531練習(xí):例:請查找出001這位同學(xué)所有課程的最高分,最低分,平均分,總分以及選課門數(shù),并使用更名。 Se

14、lect max(grade) 最高分, min(grade) 最低分, avg(grade) 平均分, sum(grade) 總分, count(sno) 選課門數(shù) from sc where sno=001;如果希望看到每一位同學(xué)的平均成績,如果希望看到每一位同學(xué)的平均成績,怎么辦?怎么辦?32Group Byn將查詢結(jié)果集按某一列或多列的將查詢結(jié)果集按某一列或多列的值值分組,值相等分組,值相等的為一組,一個分組以一個元組的形式出現(xiàn)的為一組,一個分組以一個元組的形式出現(xiàn)n只有出現(xiàn)在只有出現(xiàn)在Group By子句中的屬性,才可出現(xiàn)在子句中的屬性,才可出現(xiàn)在Select子句中子句中例:統(tǒng)計每一

15、位同學(xué)的平均成績。例:統(tǒng)計每一位同學(xué)的平均成績。Select Sno,avg(grade)From SCGroup By Sno;聚合函數(shù)聚合函數(shù)33例:統(tǒng)計各系學(xué)生的人數(shù)。例:統(tǒng)計各系學(xué)生的人數(shù)。Select sdept,count(*)From StudentGroup By sdept例:統(tǒng)計男生人數(shù),女生人數(shù)。例:統(tǒng)計男生人數(shù),女生人數(shù)。Select ssex,count(*)From StudentGroup By ssex聚合函數(shù)聚合函數(shù)34例:統(tǒng)計各系男生人數(shù),女生人數(shù)。例:統(tǒng)計各系男生人數(shù),女生人數(shù)。Select sdept,ssex,count(*)from studentg

16、roup by sdept,ssexorder by sdept聚合函數(shù)聚合函數(shù)35Havingn針對聚合函數(shù)的結(jié)果值進行篩選(選擇),針對聚合函數(shù)的結(jié)果值進行篩選(選擇),它作用于分組計算結(jié)果集它作用于分組計算結(jié)果集n跟在跟在Group By子句的后面,子句的后面,沒有沒有Group By則針對全表則針對全表例:列出具有兩門(含)以上不及格的學(xué)生的例:列出具有兩門(含)以上不及格的學(xué)生的學(xué)號、不及格的課目數(shù)。學(xué)號、不及格的課目數(shù)。Select sno,count(sno) From SCWhere grade = 2聚合函數(shù)聚合函數(shù)36聚合函數(shù)聚合函數(shù)例:例:找出具有最高平均成績的學(xué)號及平均

17、成績找出具有最高平均成績的學(xué)號及平均成績Select sno ,avg(grade)From SC Group By sno Having avg(grade) = all (Select avg(grade) From SC Group By sno)37Having 與與 Where的區(qū)別的區(qū)別nWhere 決定哪些元組被選擇參加運算,作用于關(guān)系中的元組nHaving 決定哪些分組符合要求,作用于分組n聚合函數(shù)的條件關(guān)系必須用Having,Where中不應(yīng)出現(xiàn)聚合函數(shù)聚合函數(shù)聚合函數(shù)38聚合函數(shù)對聚合函數(shù)對Null的處理nCount:不計不計nSum:不將其計入不將其計入nAvg:具有 Null 的的元組元組不參與不參與nMax 不參與不參與nMin:不參與不參與n例:例:Select count(sdept) From Student Select Avg(sage) From Student聚合函數(shù)聚合函數(shù) Null39練習(xí):例:例:找出找出CS系不及格人數(shù)在兩門(含)以上不及系不及格人數(shù)在兩門(含)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論