10第5章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL2ppt課件_第1頁(yè)
10第5章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL2ppt課件_第2頁(yè)
10第5章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL2ppt課件_第3頁(yè)
10第5章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL2ppt課件_第4頁(yè)
10第5章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL2ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第5章關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL主主 要要 內(nèi)內(nèi) 容容n5.1 SQL5.1 SQL的功能及特點(diǎn)的功能及特點(diǎn)n5.2 5.2 數(shù)據(jù)定義語(yǔ)句數(shù)據(jù)定義語(yǔ)句n5.3 5.3 數(shù)據(jù)查詢語(yǔ)句數(shù)據(jù)查詢語(yǔ)句n5.4 5.4 數(shù)據(jù)更新語(yǔ)句數(shù)據(jù)更新語(yǔ)句n5.6 5.6 數(shù)據(jù)控制語(yǔ)句數(shù)據(jù)控制語(yǔ)句5.3.1 5.3.1 查詢語(yǔ)句語(yǔ)法查詢語(yǔ)句語(yǔ)法 SELECT ALL|DCSTINCT SELECT ALL|DCSTINCT FROM FROM WHERE WHERE GROUP BY GROUP BY HAVING HAVING ORDER BY ORDER BY ASC|DESC ASC|DESC ;nSELECT

2、SELECT子句:指定要顯示的屬性列子句:指定要顯示的屬性列; ;nFROMFROM子句:指定查詢對(duì)象子句:指定查詢對(duì)象( (基本表或視圖基本表或視圖););nWHEREWHERE子句:指定查詢條件子句:指定查詢條件; ;nGROUP BYGROUP BY子句:對(duì)查詢結(jié)果按指定列的值分組,子句:對(duì)查詢結(jié)果按指定列的值分組,該屬性列值相等的元組為一個(gè)組。通常會(huì)在每組該屬性列值相等的元組為一個(gè)組。通常會(huì)在每組中使用聚集函數(shù)。中使用聚集函數(shù)。nHAVINGHAVING短語(yǔ):篩選出只有滿足指定條件的組短語(yǔ):篩選出只有滿足指定條件的組; ;nORDER BYORDER BY子句:對(duì)查詢結(jié)果表按指定列值的

3、升序子句:對(duì)查詢結(jié)果表按指定列值的升序或降序排序或降序排序; ;5.3.1 5.3.1 查詢語(yǔ)句語(yǔ)法查詢語(yǔ)句語(yǔ)法 5.3.2 簡(jiǎn)單查詢 指指FROMFROM子句中僅涉及一個(gè)表的查詢,是一種最子句中僅涉及一個(gè)表的查詢,是一種最簡(jiǎn)單的查詢操作。簡(jiǎn)單的查詢操作。 一、選擇表中的若干列一、選擇表中的若干列 二、選擇表中的若干元組二、選擇表中的若干元組 三、對(duì)查詢結(jié)果排序三、對(duì)查詢結(jié)果排序 四、使用聚集函數(shù)四、使用聚集函數(shù) 五、對(duì)查詢結(jié)果分組五、對(duì)查詢結(jié)果分組 示例數(shù)據(jù)庫(kù) 學(xué)生課程庫(kù),包含學(xué)生課程庫(kù),包含3 3個(gè)基本表,結(jié)構(gòu)為:個(gè)基本表,結(jié)構(gòu)為:Student(SnoStudent(Sno,SnameS

4、name,SsexSsex,SageSage,Sdept)Sdept)Course(CnoCourse(Cno,CnameCname,CpnoCpno,Ccredit)Ccredit)SC(SnoSC(Sno,CnoCno,Grade) Grade) 1.查詢指定列例例1 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。SELECT Sname,Sno,SdeptFROM Student;例例2 查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。SELECT Sno,SnameFROM Student; 2.查詢?nèi)苛衝例例3 查詢?nèi)w學(xué)生的詳細(xì)記錄。查詢?nèi)w學(xué)生的詳細(xì)記

5、錄。SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或或SELECT *FROM Student;3. 查詢經(jīng)過(guò)計(jì)算的值 SELECT子句的子句的為表達(dá)式為表達(dá)式算術(shù)表達(dá)式算術(shù)表達(dá)式字符串常量字符串常量函數(shù)函數(shù)列別名等列別名等 例4 查全體學(xué)生的姓名及其出生年份。SELECT Sname,2019-SageFROM Student; 輸出結(jié)果: Sname 2019-Sage - - 王林 1989 張大民 1988 顧芳 1988 姜凡 1989 葛波 1988 算術(shù)表達(dá)式算術(shù)表達(dá)式可以給列或表達(dá)式起別名:可以給列或表達(dá)式起別名:SELECT S

6、nameSELECT Sname,2019-Sage 2019-Sage AS BirthYearAS BirthYearFROM StudentFROM Student;保留字保留字ASAS可以省略可以省略4. 消除取值重復(fù)的行在SELECT子句中使用DISTINCT短語(yǔ)假設(shè)SC表中有下列數(shù)據(jù) Sno Cno Grade - - - 2019001 1 92 2019001 2 85 2019001 3 88 2019002 2 90 2019002 3 80ALL 與 DISTINCT 例5 查詢選修了課程的學(xué)生學(xué)號(hào)。 SELECT Sno FROM SC;或(默許 ALL) SELECT

7、 ALL Sno FROM SC; 結(jié)果: Sno - 2019001 2019001 2019001 2019002 2019002 例 題(2) SELECT DISTINCT Sno FROM SC; 該語(yǔ)句則去掉了重復(fù)元組結(jié)果: Sno - 2019001 2019002 例題續(xù))n留意留意 DISTINCT短語(yǔ)的作用范圍是所有目標(biāo)列短語(yǔ)的作用范圍是所有目標(biāo)列n例:查詢選修課程的各種成績(jī)例:查詢選修課程的各種成績(jī)n錯(cuò)誤的寫法錯(cuò)誤的寫法nSELECT DISTINCT Cno,DISTINCT GradenFROM SC;n正確的寫法正確的寫法n SELECT DISTINCT Cno,

8、Graden FROM SC; 5.WHERE子句常用的運(yùn)算符常用的運(yùn)算符查詢條件查詢條件謂謂 詞詞比較比較=,=,=,確定范圍確定范圍BETWEEN AND,NOT BETWEEN AND字符匹配字符匹配LIKE,NOT LIKE確定集合確定集合IN,NOT IN空值空值IS NULL,IS NOT NULL邏輯運(yùn)算符邏輯運(yùn)算符AND,OR,NOT(1) 比較大小例1 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。 SELECT Sname,Sage FROM Student WHERE Sage = 20; (2) 確定范圍n使用謂詞使用謂詞 BETWEEN AND n NOT BETWEE

9、N AND n例例2 查詢年齡在查詢年齡在2023歲包括歲包括20歲和歲和23歲之間歲之間的學(xué)生的姓名、系別和年齡。的學(xué)生的姓名、系別和年齡。 SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23; 例題續(xù))例例3 查詢年齡不在查詢年齡不在2023歲之間的學(xué)生姓名、系別歲之間的學(xué)生姓名、系別和年齡。和年齡。SELECT Sname,Sdept,SageFROM StudentWHERE Sage NOT BETWEEN 20 AND 23; 使用謂詞使用謂詞 IN IN , NOT IN , NOT IN 例例44查詢計(jì)

10、算機(jī)系查詢計(jì)算機(jī)系CSCS)、數(shù)學(xué)系)、數(shù)學(xué)系MAMA學(xué)生的姓名和學(xué)生的姓名和性別。性別。SELECT SnameSELECT Sname,SsexSsexFROM StudentFROM StudentWHERE Sdept IN ( CSWHERE Sdept IN ( CS,MA);MA);(3) 確定集合(3) 確定集合例例5查詢不是計(jì)算機(jī)系、數(shù)學(xué)系的學(xué)生的查詢不是計(jì)算機(jī)系、數(shù)學(xué)系的學(xué)生的姓名和性別。姓名和性別。SELECT Sname,SsexFROM Student WHERE Sdept NOT IN ( CS,MA);(4) 涉及空值的查詢 使用謂詞使用謂詞 IS NULL 或

11、或 IS NOT NULL “IS NULL” 不能用不能用 “= NULL” 替代替代例例13 某些學(xué)生選修課程后沒(méi)有參加考試,某些學(xué)生選修課程后沒(méi)有參加考試,所以有選課記錄,但沒(méi)有考試成績(jī)。查詢?nèi)彼杂羞x課記錄,但沒(méi)有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。少成績(jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;例題(續(xù)) 例14 查所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;(6) 多重條件查詢用邏輯運(yùn)算符AND和 OR來(lái)聯(lián)結(jié)多個(gè)查

12、詢條件 AND的優(yōu)先級(jí)高于OR 可以用括號(hào)改變優(yōu)先級(jí)可用來(lái)實(shí)現(xiàn)多種其他謂詞 NOT IN NOT BETWEEN AND 例題例15 查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage=20 AND Sage=23;6.聚集函數(shù) 5類主要集函數(shù)類主要集函數(shù)P137 表表5-10)計(jì)數(shù)計(jì)數(shù)COUNT(DISTINCT|ALL *)COUNT(DISTINCT|ALL )計(jì)算總和計(jì)算總和SUM(DISTINCT|ALL ) 計(jì)算平均值計(jì)算平均值A(chǔ)VG(DISTINCT|ALL )聚集函數(shù)續(xù)) 求最大值求最大

13、值MAX(DISTINCT|ALL )求最小值求最小值MIN(DISTINCT|ALL )DISTINCT短語(yǔ):在計(jì)算時(shí)要取消指定列中的短語(yǔ):在計(jì)算時(shí)要取消指定列中的重復(fù)值重復(fù)值A(chǔ)LL短語(yǔ):不取消重復(fù)值短語(yǔ):不取消重復(fù)值A(chǔ)LL為缺省值為缺省值例1 查詢學(xué)生總?cè)藬?shù)。 SELECT COUNT(*) FROM Student; 例2 查詢選修了課程的學(xué)生人數(shù)。 SELECT COUNT(DISTINCT Sno) FROM SC;注:用DISTINCT以避免重復(fù)計(jì)算學(xué)生人數(shù)例3 計(jì)算1號(hào)課程的學(xué)生平均成績(jī)。 SELECT AVG(Grade) FROM SC WHERE Cno= 1 ; 例4 查

14、詢選修1號(hào)課程的學(xué)生最高分?jǐn)?shù)。 SELECT MAX(Grade) FROM SC WHER Cno= 1 ; 7.GROUP BY子句分組 使用使用GROUP BYGROUP BY子句分組,細(xì)化聚集函數(shù)的作用子句分組,細(xì)化聚集函數(shù)的作用對(duì)象對(duì)象 未對(duì)查詢結(jié)果分組,聚集函數(shù)將作用于整個(gè)查詢結(jié)未對(duì)查詢結(jié)果分組,聚集函數(shù)將作用于整個(gè)查詢結(jié)果果; ; 對(duì)查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個(gè)組對(duì)查詢結(jié)果分組后,聚集函數(shù)將分別作用于每個(gè)組; ;使用GROUP BY子句分組 例例11求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。求各個(gè)課程號(hào)及相應(yīng)的選課人數(shù)。 SELECT Cno SELECT Cno, COUNT(

15、Sno) COUNT(Sno) FROM SC FROM SC GROUP BY Cno GROUP BY Cno;CnoCOUNT(Sno)11564113731024211362使用GROUP BY子句分組續(xù))留意:留意:GROUP BY子句的作用對(duì)象是查詢的中間結(jié)果表子句的作用對(duì)象是查詢的中間結(jié)果表分組方法:按指定的一列或多列值分組,值相等的為一組分組方法:按指定的一列或多列值分組,值相等的為一組使用使用GROUP BY子句后,子句后,SELECT子句的列名列表中只能出現(xiàn)分組屬性子句的列名列表中只能出現(xiàn)分組屬性和聚集函數(shù)和聚集函數(shù)使用HAVING短語(yǔ)篩選最終輸出結(jié)果例2 查詢選修了3門以

16、上課程的學(xué)生學(xué)號(hào)。 SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*) 3; 使用HAVING短語(yǔ)篩選最終輸出結(jié)果續(xù))留意:只有滿足HAVING短語(yǔ)指定條件的組才輸出HAVING短語(yǔ)與WHERE子句的區(qū)別:作用對(duì)象不同WHERE子句作用于基表或視圖,從中選擇滿足條件的元組。HAVING短語(yǔ)作用于組,從中選擇滿足條件的組。 8. ORDER BY子句排序使用ORDER BY子句 可以按一個(gè)或多個(gè)屬性列排序 升序:ASC;降序:DESC;缺省值為升序當(dāng)排序列含空值時(shí)ASC:排序列為空值的元組最后顯示DESC:排序列為空值的元組最先顯示 例1 查詢選修了3

17、號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。 SELECT Sno,Grade FROM SC WHERE Cno= 3 ORDER BY Grade DESC; 查詢結(jié)果 Sno Grade - - 2019010 2019024 2019007 92 2019003 82 2019010 82 2019009 75 2019014 61 2019002 55例2 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號(hào)升序排列,同一系中的學(xué)生按年齡降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC; ORDER BY 5,4 DESC; 小結(jié):

18、SELECT語(yǔ)句的一般格式SELECT ALL|DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC|DESC ;5.3.3 連接查詢n連接查詢中的連接條件通過(guò)連接查詢中的連接條件通過(guò)WHEREWHERE子句表達(dá),連接子句表達(dá),連接條件和元組選擇條件之間用條件和元組選擇條件之間用ANDAND與操作符銜接;與操作符銜接;n源表一般為多表;源表一般為多表;n用來(lái)連接兩個(gè)表的條件稱為連接條件或連接謂詞;用來(lái)連接兩個(gè)表的條件稱為連接條件或連接謂詞;n連接謂詞中的列名稱為連接字段;連接謂詞中的列名稱為連接字段;n連接字段不一定同名,但類型必須是可比的;連接字段

19、不一定同名,但類型必須是可比的; 例例1 1 查詢每個(gè)學(xué)生的基本情況以及他所選查詢每個(gè)學(xué)生的基本情況以及他所選修的課程情況。修的課程情況。Student(SnoStudent(Sno,SnameSname,SsexSsex,SageSage,Sdept)Sdept)Course(CnoCourse(Cno,CnameCname,CpnoCpno,Ccredit)Ccredit)SC(SnoSC(Sno,CnoCno,Grade)Grade) SELECT Student .*,SC.* FROM Student, SC WHERE Student .Sno =SC.Sno; 例例2 2 求學(xué)生的學(xué)號(hào)、姓名、選修的課程名求學(xué)生的學(xué)號(hào)、姓名、選修的課程名及成績(jī)。及成績(jī)。Student(SnoStudent(Sno,SnameSname,SsexSsex,SageSage,Sdept)Sdept)Course(CnoCourse(Cno,CnameCname,CpnoCpno,Ccredit)Ccr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論