關系數(shù)據(jù)庫標準語言SQL2_第1頁
關系數(shù)據(jù)庫標準語言SQL2_第2頁
關系數(shù)據(jù)庫標準語言SQL2_第3頁
關系數(shù)據(jù)庫標準語言SQL2_第4頁
關系數(shù)據(jù)庫標準語言SQL2_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、關系數(shù)據(jù)庫標準語言SQL21 第5章 關系數(shù)據(jù)庫標準語言SQL 關系數(shù)據(jù)庫標準語言SQL22 主主 要要 內(nèi)內(nèi) 容容 n5.1 SQL5.1 SQL的功能及特點的功能及特點 n5.2 5.2 數(shù)據(jù)定義語句數(shù)據(jù)定義語句 n5.3 5.3 數(shù)據(jù)查詢語句數(shù)據(jù)查詢語句 n5.4 5.4 數(shù)據(jù)更新語句數(shù)據(jù)更新語句 n5.6 5.6 數(shù)據(jù)控制語句數(shù)據(jù)控制語句 關系數(shù)據(jù)庫標準語言SQL23 5.3.1 5.3.1 查詢語句語法查詢語句語法 SELECT ALL|DCSTINCTSELECT ALL|DCSTINCT FROM FROM WHERE WHERE GROUP BY GROUP BY HAVING

2、 HAVING ORDER BY ORDER BY ASC|DESC ASC|DESC ; 關系數(shù)據(jù)庫標準語言SQL24 nSELECTSELECT子句:指定要顯示的屬性列子句:指定要顯示的屬性列; ; nFROMFROM子句:指定查詢對象子句:指定查詢對象( (基本表或視圖基本表或視圖) ); ; nWHEREWHERE子句:指定查詢條件子句:指定查詢條件; ; nGROUP BYGROUP BY子句:對查詢結(jié)果按指定列的值分組,子句:對查詢結(jié)果按指定列的值分組, 該屬性列值相等的元組為一個組。通常會在每組該屬性列值相等的元組為一個組。通常會在每組 中使用聚集函數(shù)。中使用聚集函數(shù)。 nHAV

3、INGHAVING短語:篩選出只有滿足指定條件的組短語:篩選出只有滿足指定條件的組; ; nORDER BYORDER BY子句:對查詢結(jié)果表按指定列值的升序子句:對查詢結(jié)果表按指定列值的升序 或降序排序或降序排序; ; 5.3.1 5.3.1 查詢語句語法查詢語句語法 關系數(shù)據(jù)庫標準語言SQL25 5.3.2 簡單查詢 指指FROMFROM子句中僅涉及一個表的查詢,是一種最子句中僅涉及一個表的查詢,是一種最 簡單的查詢操作。簡單的查詢操作。 一、選擇表中的若干列一、選擇表中的若干列 二、選擇表中的若干元組二、選擇表中的若干元組 三、對查詢結(jié)果排序三、對查詢結(jié)果排序 四、使用聚集函數(shù)四、使用聚

4、集函數(shù) 五、對查詢結(jié)果分組五、對查詢結(jié)果分組 關系數(shù)據(jù)庫標準語言SQL26 示例數(shù)據(jù)庫 學生課程庫,包含學生課程庫,包含3 3個基本表,結(jié)構(gòu)為:個基本表,結(jié)構(gòu)為: nStudent(SnoStudent(Sno,SnameSname,SsexSsex,SageSage,Sdept)Sdept) nCourse(CnoCourse(Cno,CnameCname,CpnoCpno,Ccredit)Ccredit) nSC(SnoSC(Sno,CnoCno,Grade) Grade) 關系數(shù)據(jù)庫標準語言SQL27 1.查詢指定列 例例1 查詢?nèi)w學生的學號與姓名。查詢?nèi)w學生的學號與姓名。 SELE

5、CT Sname,Sno,Sdept FROM Student; 例例2 查詢?nèi)w學生的姓名、學號、所在系。查詢?nèi)w學生的姓名、學號、所在系。 SELECT Sno,Sname FROM Student; 關系數(shù)據(jù)庫標準語言SQL28 2.查詢?nèi)苛?例例3 查詢?nèi)w學生的詳細記錄。查詢?nèi)w學生的詳細記錄。 SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或或 SELECT * FROM Student; 關系數(shù)據(jù)庫標準語言SQL29 3. 查詢經(jīng)過計算的值 SELECT子句的子句的為表達式為表達式 算術表達式算術表達式 字符串常量字符串常量 函數(shù)

6、函數(shù) 列別名等列別名等 關系數(shù)據(jù)庫標準語言SQL210 例4 查全體學生的姓名及其出生年份。 SELECT Sname,2007-Sage FROM Student; 輸出結(jié)果: Sname 2007-Sage - - 王林 1989 張大民 1988 顧芳 1988 姜凡 1989 葛波 1988 算術表達式算術表達式 可以給列或表達式起別名:可以給列或表達式起別名: SELECT SnameSELECT Sname,2007-Sage 2007-Sage AS BirthYearAS BirthYear FROM StudentFROM Student; 保留字保留字ASAS可以省略可以省

7、略 關系數(shù)據(jù)庫標準語言SQL211 4. 消除取值重復的行 在SELECT子句中使用DISTINCT短語 假設SC表中有下列數(shù)據(jù) Sno Cno Grade - - - 2007001 1 92 2007001 2 85 2007001 3 88 2007002 2 90 2007002 3 80 關系數(shù)據(jù)庫標準語言SQL212 ALL 與 DISTINCT 例5 查詢選修了課程的學生學號。 SELECT Sno FROM SC; 或(默認 ALL) SELECT ALL Sno FROM SC; 結(jié)果: Sno - 2007001 2007001 2007001 2007002 200700

8、2 關系數(shù)據(jù)庫標準語言SQL213 例 題 (2) SELECT DISTINCT Sno FROM SC; 該語句則去掉了重復元組 結(jié)果: Sno - 關系數(shù)據(jù)庫標準語言SQL214 例題(續(xù)) n注意注意 DISTINCT短語的短語的作用范圍是所有目標列作用范圍是所有目標列 例:查詢選修課程的各種成績例:查詢選修課程的各種成績 錯誤的寫法錯誤的寫法 SELECT DISTINCT Cno,DISTINCT Grade FROM SC; 正確的寫法正確的寫法 SELECT DISTINCT Cno,Grade FROM SC; 關系數(shù)據(jù)庫標準語言SQL215 5.WHERE子句 常用的運算符

9、常用的運算符 查詢條件查詢條件謂謂 詞詞 比較比較=,=,=, 確定范圍確定范圍BETWEEN AND,NOT BETWEEN AND 字符匹配字符匹配LIKE,NOT LIKE 確定集合確定集合IN,NOT IN 空值空值IS NULL,IS NOT NULL 邏輯運算符邏輯運算符AND,OR,NOT 關系數(shù)據(jù)庫標準語言SQL216 (1) 比較大小 例1 查詢所有年齡在20歲以下的學生姓名及其年齡。 SELECT Sname,Sage FROM Student WHERE Sage = 20; 關系數(shù)據(jù)庫標準語言SQL217 (2) 確定范圍 n使用謂詞使用謂詞 BETWEEN AND N

10、OT BETWEEN AND 例例2 查詢年齡在查詢年齡在2023歲(包括歲(包括20歲和歲和23歲)之間的歲)之間的 學生的姓名、系別和年齡學生的姓名、系別和年齡。 SELECT Sname,Sdept,Sage FROM Student WHERE Sage BETWEEN 20 AND 23; 關系數(shù)據(jù)庫標準語言SQL218 例題(續(xù)) 例例3 查詢年齡不在查詢年齡不在2023歲之間的學生姓名、系別歲之間的學生姓名、系別 和年齡。和年齡。 SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23; 關系數(shù)據(jù)

11、庫標準語言SQL219 使用謂詞使用謂詞 IN IN , , NOT IN NOT IN 例4查詢計算機系(CS)、數(shù)學系(MA)學生 的姓名和性別。 SELECT Sname,Ssex FROM Student WHERE Sdept IN ( CS,MA); (3) 確定集合 關系數(shù)據(jù)庫標準語言SQL220 (3) 確定集合 例例5查詢不是計算機系、數(shù)學系的學生的查詢不是計算機系、數(shù)學系的學生的 姓名和性別。姓名和性別。 SELECT Sname,Ssex FROM Student WHERE Sdept NOT IN ( CS,MA); 關系數(shù)據(jù)庫標準語言SQL221 (4) 涉及空值的

12、查詢 使用謂詞使用謂詞 IS NULL 或或 IS NOT NULL “IS NULL” 不能用不能用 “= NULL” 代替代替 例例13 某些學生選修課程后沒有參加考試,所以有選課某些學生選修課程后沒有參加考試,所以有選課 記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W生的學號記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W生的學號 和相應的課程號。和相應的課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL; 關系數(shù)據(jù)庫標準語言SQL222 例題(續(xù)) 例14 查所有有成績的學生學號和課程號。 SELECT Sno,Cno FROM SC WHERE Grade

13、IS NOT NULL; 關系數(shù)據(jù)庫標準語言SQL223 (6) 多重條件查詢 用邏輯運算符AND和 OR來聯(lián)結(jié)多個查詢條件 n AND的優(yōu)先級高于OR n 可以用括號改變優(yōu)先級 可用來實現(xiàn)多種其他謂詞 n NOT IN n NOT BETWEEN AND 關系數(shù)據(jù)庫標準語言SQL224 例題 例15 查詢計算機系年齡在20歲以下的學生姓名。 SELECT Sname FROM Student WHERE Sdept= CS AND Sage=20 AND Sage=23; 關系數(shù)據(jù)庫標準語言SQL227 6.聚集函數(shù) 5類主要集函數(shù)(類主要集函數(shù)(P137 表表5-10) 計數(shù)計數(shù) COUN

14、T(DISTINCT|ALL *) COUNT(DISTINCT|ALL ) 計算總和計算總和 SUM(DISTINCT|ALL ) 計算平均值計算平均值 AVG(DISTINCT|ALL ) 關系數(shù)據(jù)庫標準語言SQL228 聚集函數(shù)(續(xù)) 求最大值求最大值 MAX(DISTINCT|ALL ) 求最小值求最小值 MIN(DISTINCT|ALL ) DISTINCT短語:在計算時要取消指定列中的重復短語:在計算時要取消指定列中的重復 值值 ALL短語:不取消重復值短語:不取消重復值 ALL為缺省值為缺省值 關系數(shù)據(jù)庫標準語言SQL229 例1 查詢學生總?cè)藬?shù)。 SELECT COUNT(*)

15、 FROM Student; 例2 查詢選修了課程的學生人數(shù)。 SELECT COUNT(DISTINCT Sno) FROM SC; 注:用DISTINCT以避免重復計算學生人數(shù) 關系數(shù)據(jù)庫標準語言SQL230 例3 計算1號課程的學生平均成績。 SELECT AVG(Grade) FROM SC WHERE Cno= 1 ; 例4 查詢選修1號課程的學生最高分數(shù)。 SELECT MAX(Grade) FROM SC WHER Cno= 1 ; 關系數(shù)據(jù)庫標準語言SQL231 7.GROUP BY子句分組 使用使用GROUP BYGROUP BY子句分組,細化聚集函數(shù)的作用子句分組,細化聚集

16、函數(shù)的作用 對象對象 未對查詢結(jié)果分組,聚集函數(shù)將作用于整個未對查詢結(jié)果分組,聚集函數(shù)將作用于整個 查詢結(jié)果查詢結(jié)果; ; 對查詢結(jié)果分組后,聚集函數(shù)將分別作用于對查詢結(jié)果分組后,聚集函數(shù)將分別作用于 每個組每個組; ; 關系數(shù)據(jù)庫標準語言SQL232 使用GROUP BY子句分組 例例11求各個課程號及相應的選課人數(shù)。求各個課程號及相應的選課人數(shù)。 SELECT CnoSELECT Cno, COUNT(Sno) COUNT(Sno) FROM SC FROM SC GROUP BY Cno GROUP BY Cno;CnoCOUNT(Sno) 11564 11373 10242 11362

17、 關系數(shù)據(jù)庫標準語言SQL233 使用GROUP BY子句分組(續(xù)) 注意:注意: GROUP BY子句的作用對象是查詢的中間結(jié)子句的作用對象是查詢的中間結(jié) 果表果表 分組方法:按指定的一列或多列值分組,值相分組方法:按指定的一列或多列值分組,值相 等的為一組等的為一組 使用使用GROUP BY子句后,子句后,SELECT子句的列名子句的列名 列表中只能出現(xiàn)分組屬性和聚集函數(shù)列表中只能出現(xiàn)分組屬性和聚集函數(shù) 關系數(shù)據(jù)庫標準語言SQL234 使用HAVING短語篩選最終輸出結(jié)果 例2 查詢選修了3門以上課程的學生學號。 SELECT Sno FROM SC GROUP BY Sno HAVING

18、 COUNT(*) 3; 關系數(shù)據(jù)庫標準語言SQL235 使用HAVING短語篩選最終輸出結(jié)果(續(xù)) 注意: 只有滿足HAVING短語指定條件的組才輸出 HAVING短語與WHERE子句的區(qū)別:作用對 象不同 WHERE子句作用于基表或視圖,從中選擇滿子句作用于基表或視圖,從中選擇滿 足條件的元組。足條件的元組。 HAVING短語作用于組,從中選擇滿足條件的短語作用于組,從中選擇滿足條件的 組組。 關系數(shù)據(jù)庫標準語言SQL236 8. ORDER BY子句排序 使用ORDER BY子句 n 可以按一個或多個屬性列排序 n 升序:ASC;降序:DESC;缺省值為升序 當排序列含空值時 nASC:

19、排序列為空值的元組最后顯示 nDESC:排序列為空值的元組最先顯示 關系數(shù)據(jù)庫標準語言SQL237 例1 查詢選修了3號課程的學生的學號及其 成績,查詢結(jié)果按分數(shù)降序排列。 SELECT Sno,Grade FROM SC WHERE Cno= 3 ORDER BY Grade DESC; 關系數(shù)據(jù)庫標準語言SQL238 查詢結(jié)果 Sno Grade - - 2007010 2007024 2007007 92 2007003 82 2007010 82 2007009 75 2007014 61 2007002 55 關系數(shù)據(jù)庫標準語言SQL239 例2 查詢?nèi)w學生情況,查詢結(jié)果按所在 系

20、的系號升序排列,同一系中的學生按 年齡降序排列。 SELECT * FROM Student ORDER BY Sdept,Sage DESC; ORDER BY 5,4 DESC; 關系數(shù)據(jù)庫標準語言SQL240 小結(jié):SELECT語句的一般格式 SELECT ALL|DISTINCT FROM WHERE GROUP BY HAVING ORDER BY ASC|DESC ; 關系數(shù)據(jù)庫標準語言SQL241 5.3.3 連接查詢 n連接查詢中的連接條件通過連接查詢中的連接條件通過WHEREWHERE子句表達,連接子句表達,連接 條件和元組選擇條件之間用條件和元組選擇條件之間用ANDAND(

21、與)操作符銜接;(與)操作符銜接; n源表一般為多表;源表一般為多表; n用來連接兩個表的條件稱為連接條件或連接謂詞;用來連接兩個表的條件稱為連接條件或連接謂詞; n連接謂詞中的列名稱為連接字段;連接謂詞中的列名稱為連接字段; n連接字段不一定同名,但類型必須是可比的;連接字段不一定同名,但類型必須是可比的; 關系數(shù)據(jù)庫標準語言SQL242 例例1 1 查詢每個學生的基本情況以及他所選查詢每個學生的基本情況以及他所選 修的課程情況。修的課程情況。 nStudent(SnoStudent(Sno,SnameSname,SsexSsex,SageSage,Sdept)Sdept) nCourse(

22、CnoCourse(Cno,CnameCname,CpnoCpno,Ccredit)Ccredit) nSC(SnoSC(Sno,CnoCno,Grade)Grade) 關系數(shù)據(jù)庫標準語言SQL243 SELECT Student .*,SC.* FROM Student, SC WHERE Student .Sno =SC.Sno; 關系數(shù)據(jù)庫標準語言SQL244 例例2 2 求學生的學號、姓名、選修的課程名求學生的學號、姓名、選修的課程名 及成績。及成績。 nStudent(SnoStudent(Sno,SnameSname,SsexSsex,SageSage,Sdept)Sdept) nCourse(CnoCourse(Cno,CnameCname,Cpn

溫馨提示

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

評論

0/150

提交評論