版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:教育家精神引領(lǐng)高校思政課教師職業(yè)素養(yǎng)評(píng)價(jià)體系建構(gòu)研究
- 二零二五版鋁合金建筑模板采購(gòu)協(xié)議書4篇
- 商場(chǎng)內(nèi)品牌專賣店裝修許可協(xié)議(2025年)2篇
- 2025年度苗木種植與林業(yè)產(chǎn)業(yè)發(fā)展合作合同4篇
- 二手房合作投資合同模板2024版B版
- 二零二五年度人工智能教育培訓(xùn)合同補(bǔ)充協(xié)議6篇
- 二零二五年度旅行社與航空公司合作協(xié)議書3篇
- 2025年度品牌跨界合作與品牌授權(quán)合作協(xié)議4篇
- 二零二五版?zhèn)€人貸款居間中介服務(wù)協(xié)議書6篇
- 2025年度個(gè)人房產(chǎn)抵押借款合同規(guī)范文本8篇
- 【寒假預(yù)習(xí)】專題04 閱讀理解 20篇 集訓(xùn)-2025年人教版(PEP)六年級(jí)英語(yǔ)下冊(cè)寒假提前學(xué)(含答案)
- 2024年智能監(jiān)獄安防監(jiān)控工程合同3篇
- 2024年度窯爐施工協(xié)議詳例細(xì)則版B版
- 幼兒園籃球課培訓(xùn)
- 【企業(yè)盈利能力探析的國(guó)內(nèi)外文獻(xiàn)綜述2400字】
- 統(tǒng)編版(2024新版)七年級(jí)《道德與法治》上冊(cè)第一單元《少年有夢(mèng)》單元測(cè)試卷(含答案)
- 100道20以內(nèi)的口算題共20份
- 高三完形填空專項(xiàng)訓(xùn)練單選(部分答案)
- 護(hù)理查房高鉀血癥
- 項(xiàng)目監(jiān)理策劃方案匯報(bào)
- 《職業(yè)培訓(xùn)師的培訓(xùn)》課件
評(píng)論
0/150
提交評(píng)論