




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. .PAGE9 / NUMPAGES9設教學數(shù)據(jù)庫Education有三個關系:學生關系S(SNO,SNAME,AGE,SEX,SDEPT);學習關系SC(SNO,CNO,GRADE);課程關系C(CNO,CNAME,CDEPT,TNAME)查詢問題:檢索計算機系的全體學生的學號,和性別;檢索學習課程號為C2的學生學號與;檢索選修課程名為“DS”的學生學號與;(4)檢索選修課程號為C2或C4的學生學號;(5)檢索至少選修課程號為C2和C4的學生學號;(6)檢索不學C2課的學生和年齡;(7)檢索學習全部課程的學生;(8)查詢所學課程包含學生S3所學課程的學生學號。(1)檢索計算機系的全體學生的
2、學號,和性別;SELECT Sno,Sname,Sex FROM SWHERE Sdept =CS;(2)檢索學習課程號為C2的學生學號與;2.SELECT S.Sno,Sname FROM S,SC WHERE S.Sno=SC.Sno AND SC.Cno=C2;1.SELECT Sno,SnameFROM SWHERE Sno IN ( SELECT Sno FROM SC WHERE Cno=C2) (3)檢索選修課程名為“DS”的學生學號與 本查詢涉與到學號、和課程名三個屬性,分別存放在S和C表中,但S和C表沒有直接聯(lián)系,必須通過SC表建立它們二者的聯(lián)系。 C SC S基本思路:(1
3、)首先在C表中找出“DS”課程的課程號Cno;(2)然后在SC表中找出Cno等于第一步給出的Cno 集合中的某個元素Cno;(3)最后在S關系中選出Sno等于第二步中Sno 集合中某個元素的元組,取出Sno 和Sname送入結果表列。SELECT Sno,Sname FROM SWHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=DS);檢索選修課程號為C2或C4的學生學號;SELECT SnoFROM SCWHERE Cno=C2 OR Cno=C4;檢索至少選修課程號為C2和C4的學生學號
4、;SELECT SnoFROM SC X,SC YWHERE X.Sno=Y.Sno AND X.Cno=C2 AND Y.Cno=C4 ;檢索不學C2課的學生和年齡;2.SELECT Sname FROM S WHERE NOT EXISTS ( SELECT * FROM SC WHERE SC.Sno=S.Sno AND Cno=C2); 1.SELECT Sname FROM S WHERE Sno NOT IN ( SELECT Sno FROM SC WHERE Cno=C2);檢索學習全部課程的學生;在表S中找學生,要求這個學生學了全部課程。換言之,在S表中找學生,在C中不存在一
5、門課程,這個學生沒有學。SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND SC.Cno=C.Cno));查詢所學課程包含學生S3所學課程的學生學號。分析:不存在這樣的課程Y,學生S3選了Y,而其他學生沒有選。SELECT DISTINCT Sno FROM SC AS XWHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.Sno=S3 AND NOT EXISTS (SELECT
6、 * FROM SC AS Z WHERE Z.Sno=X.Sno AND Z.Cno=Y.Cno));設教學數(shù)據(jù)庫Education有三個關系:學生關系S(SNO,SNAME,AGE,SEX,SDEPT);學習關系SC(SNO,CNO,GRADE);課程關系C(CNO,CNAME,CDEPT,TNAME)查詢問題:1:查所有年齡在20歲以下的學生與年齡。2:查考試成績有不與格的學生的學號3:查所年齡在20至23歲之間的學生、系別與年齡。4:查計算機系、數(shù)學系、信息系的學生、性別。5:查既不是計算機系、數(shù)學系、又不是信息系的學生、性別6:查所有姓“”的學生的、學號和性別。7:查姓“上官”且全名
7、為3個漢字的學生。8:查所有不姓“”的學生的。9:查DB_Design課程的課程號。10:查缺考的學生的學號和課程號。11:查年齡為空值的學生的學號和。12:查計算機系20歲以下的學生的學號和。13:查計算機系、數(shù)學系、信息系的學生、性別。14:查詢選修了C3課程的學生的學號和成績,其結果按分數(shù)的降序排列。15:查詢全體學生的情況,查詢結果按所在系升序排列,對同一系中的學生按年齡降序排列。16:查詢學生總人數(shù)。17:查詢選修了課程的學生人數(shù)。18:計算選修了C1課程的學生平均成績。19:查詢學習C3課程的學生最高分數(shù)。20:查詢各個課程號與相應的選課人數(shù)。21:查詢計算機系選修了3門以上課程的
8、學生的學號。22:求基本表S中男同學的每一年齡組(超過50人)有多少人?要求查詢結果按人數(shù)升序排列,人數(shù)一樣按年齡降序排列。23:查詢每個學生與其選修課程的情況。24:查詢選修了C2課程且成績在90分以上的所有學生。25:查詢每個學生選修的課程名與其成績。26:統(tǒng)計每一年齡選修課程的學生人數(shù)。27:查詢選修了C2課程的學生。28:查詢與“三”在同一個系學習的學生學號、和系別。29:查詢選修課程名為“數(shù)據(jù)庫”的學生學號和。30:查詢與“三”在同一個系學習的學生學號、和系別。31:查詢選修課程名為“數(shù)據(jù)庫”的學生學號和。32:查詢選修了C2課程的學生。33:查詢所有未選修C2課程的學生。34:查詢
9、與“三”在同一個系學習的學生學號、和系別。35:查詢選修了全部課程的學生。36:查詢所學課程包含學生S3所學課程的學生學號(1)比較例1:查所有年齡在20歲以下的學生與年齡。 SELECT Sname,Sage FROM S WHERE Sage=20)例2:查考試成績有不與格的學生的學號 SELECT DISTINCT Sno FROM SC WHERE grade60;(2)確定圍例3:查所年齡在20至23歲之間的學生、系別與年齡。 SELECT Sname,Sdept,Sage FROM S WHERE Sage BETWEEN 20 AND 23;(3)確定集合 例4:查計算機系、數(shù)學
10、系、信息系的學生、性別。 SELECT Sname,Ssex FROM S WHERE Sdept IN (CS, IS, MATH);例5:查既不是計算機系、數(shù)學系、又不是信息系的學生、性別 SELECT Sname,Ssex FROM S WHERE Sdept NOT IN (CS, IS, MATH);(4)字符匹配例6:查所有姓“”的學生的、學號和性別。 SELECT Sname,Sno,Ssex FROM S WHERE Sname LIKE %;例7:查姓“上官”且全名為3個漢字的學生。 SELECT Sname FROM S WHERE Sname LIKE 上官_ _;例8:
11、查所有不姓“”的學生的。 SELECT Sname,Sno,Ssex FROM S WHERE Sname NOT LIKE %;例9:查DB_Design課程的課程號。 SELECT Cno FROM C WHERE Cname LIKE DB_Design ESCAPE ;(5)涉與空值的查詢例10:查缺考的學生的學號和課程號。 SELECT Sno,Cno FROM SC WHERE Grade IS NULL; (不能用=代替) 有成績的 WHERE Grade IS NOT NULLL; 例11:查年齡為空值的學生的學號和。 SELECT Sno,Sname FROM S WHERE
12、 Sage IS NULL;(6)多重條件查詢例12:查計算機系20歲以下的學生的學號和。 SELECT Sno,Sname FROM S WHERE Sdept=CS AND Sage3; WHERE子句與HAVING短語的根本區(qū)別在于作用對象不同。WHERE子句作用于基本表或視圖,從中選擇滿足條件的元組。HAVING短語作用于組,從中選擇滿足條件的組。例22:求基本表S中男同學的每一年齡組(超過50人)有多少人?要求查詢結果按人數(shù)升序排列,人數(shù)一樣按年齡降序排列。 SELECT Sage,COUNT(Sno)FROM SWHERE Ssex=MGROUP BY SageHAVING COU
13、NT(*) 50ORDER BY 2,Sage DESC;二、多表查詢1、聯(lián)接查詢例23:查詢每個學生與其選修課程的情況。 SELECT S.Sno,Sname,Sage,Ssex,Sdept,Cno,Grade FROM S, SC WHERE S.Sno=SC.Sno; 例24:查詢選修了C2課程且成績在90分以上的所有學生。 SELECT S.Sno,Sname FROM S,SC WHERE S.Sno=SC.Sno AND SC.Cno=C2 AND SC.Grade 90;例25:查詢每個學生選修的課程名與其成績。 SELECT S.Sno,Sname,Cname,SC.Grade
14、 FROM S,SC,C WHERE S.Sno=SC.Sno AND SC.Cno=C.Cno 例26:統(tǒng)計每一年齡選修課程的學生人數(shù)。 SELECT Sage,COUNT(DISTINCT S.Sno) FROM S,SC WHERE S.Sno=SC.Sno GROUP BY S; 由于要統(tǒng)計每一個年齡的學生人數(shù),因此要把滿足WHERE子句中條件的查詢結果按年齡分組,在每一組中的學生年齡一樣。此時的SELECT子句應對每一組分開進行操作,在每一組中,年齡只有一個值,統(tǒng)計的人數(shù)是這一組中的學生人數(shù)。1、嵌套查詢(1)帶有IN謂詞的子查詢 指父查詢與子查詢之間用IN進行聯(lián)接,判斷某個屬性列值
15、是否在子查詢的結果中。例27:查詢選修了C2課程的學生。 SELECT Sname FROM S WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno=C2); 例28:查詢與“三”在同一個系學習的學生學號、和系別。分析:(1)確定“三”所在的系;(2)查找所有在X系學習的學生。 SELECT Sdept FROM S WHERE Sname=三; SELECT Sno,Sname,Sdept FROM S WHERE Sdept=XFROM S AS S1, S AS S2WHERE S1.Sdept=S2.Sdept AND S2.Sname=張三 把第一
16、步查詢嵌入到第二步查詢中,用以構造第二步查詢的條件。 SELECT Sno,Sname,Sdept FROM S WHERE Sdept IN (SELECT Sdept FROM S WHERE Sname=三);例29:查詢選修課程名為“數(shù)據(jù)庫”的學生學號和。 本查詢涉與到學號、和課程名三個屬性,分別存放在S和C表中,但S和C表沒有直接聯(lián)系,必須通過SC表建立它們二者的聯(lián)系。 C SC S基本思路:(1)首先在C表中找出“DB”課程的課程號Cno;(2)然后在SC表中找出Cno等于第一步給出的Cno 集合中的某個元素Cno;(3)最后在S關系中選出Sno等于第二步中Sno 集合中某個元素的
17、元組,取出Sno 和Sname送入結果表列。 SELECT Sno,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=DB);聯(lián)接查詢方式(2)帶有比較運算符的子查詢例30:查詢與“三”在同一個系學習的學生學號、和系別。 SELECT Sno,Sname,Sdept FROM S WHERE Sdept = (SELECT Sdept FROM S WHERE Sname=三);例31:查詢選修課程名為“數(shù)據(jù)庫”的學生學號和。 SELECT Sno,Sname FR
18、OM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno = (SELECT Cno FROM C WHERE Cname=DB);(3)帶有EXISTS謂詞的子查詢(1)帶有EXISTS謂詞的子查詢不返回任何實際數(shù)據(jù),它只產生邏輯值。例32:查詢選修了C2課程的學生。 1.SELECT Sname FROM S WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno=C2); 2.SELECT Sname FROM S WHERE EXISTS ( SELECT * FROM SC WHERE SC.Sno=S.Sno AND Cno=C2); 例33:查詢所有未選修C2課程的學生。 SELECT Sname FROM S WHERE NOT EXISTS ( SELECT * FROM SC WHERE SC.Sno=S.Sno AND Cno=C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度商鋪租賃合同終止及市場租金指數(shù)掛鉤協(xié)議
- 2025年度股東股份協(xié)議書:智慧城市建設項目股權分配及合作協(xié)議
- 自建房安全質量監(jiān)督承包協(xié)議書(2025年度)
- 農村自建房建筑工程保險合同(2025年度)
- 二零二五年度教育機構學費返利合同
- 二零二五年度高端基金份額代持保密協(xié)議書
- 2025年度磚廠安全生產承包管理合同
- 二零二五年度汽修廠汽車維修技師職業(yè)健康檢查合同
- 2025年度煙草店店鋪轉讓與獨家銷售區(qū)域授權合同
- 2025年度水平定向鉆施工與施工期環(huán)境保護合同
- 考察領導談話怎么評價領導【六篇】
- 無側限抗壓強度試驗記錄
- 鉗形電流表使用PPT
- 建筑工程分部分項工程劃分表(新版)
- 福建省危險化學品企業(yè)安全標準化(三級)考核評分標準指導意見(試行)
- 上海市長寧區(qū)2022年高考英語一模試卷(含答案)
- 城鎮(zhèn)詳細設計控制性詳細規(guī)劃
- 智能垃圾桶系統(tǒng)的設計論文
- 質量管理體系過程識別矩陣圖及與條款對照表
- 北碚區(qū)幼兒園
- 2021年度錨索張拉機具及錨桿拉力計技術規(guī)格書
評論
0/150
提交評論