日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL server数据库实验(三)数据库的嵌套查询和集合查询

發布時間:2023/12/14 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL server数据库实验(三)数据库的嵌套查询和集合查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、針對教學管理數據庫SCT,進行以下各種嵌套查詢與集合查詢
    • 1.查詢選修了“數據庫”課程的學生信息
    • 2.查詢與學生“李維”在同一個院系的學生選課信息(包括李維)
    • 3.對每個選修了課程的學生,查詢他獲得最高成績的課程號和成績
    • 4.查詢與“王麗”職稱相同的其他女教師信息
    • 5.查詢教師“周小平”和“王建寧”的授課信息,結果按照教師號升序顯示
    • 6.查詢至少選修了學生“李維”所選的所有課程的其他學生信息
    • 7.查詢至少選修了“數據庫”和“C語言”課程的學生信息
    • 8.查詢“計算機”學院與“電子”學院的女學生信息
    • 9.查詢選修了“C語言”但是未選修“數據庫”課程的學生信息
    • 10.查詢學分是3或4的課程信息
    • 11.查詢無人選修的課程的詳細信息
  • 二、針對教學管理數據庫SCT,進行以下各種查詢:
    • 1.查詢選修了“CS-001”課程,且成績為第3到第5名的學生姓名,要求按照成績的降序輸出
    • 2.查詢各門課程選修學生數占學生總數的百分比;(沒有學生選修的課程也要考慮)
    • 3.查詢選課門數唯一的學生姓名(選課門數與其他學生都不相同)。(只考慮選修了課程的學生)


一、針對教學管理數據庫SCT,進行以下各種嵌套查詢與集合查詢

1.查詢選修了“數據庫”課程的學生信息

select * from STUDENT055 where SNO in(select SNOfrom SCT055where CNO in(select CNOfrom COURSE055where CNAME = '數據庫'));

2.查詢與學生“李維”在同一個院系的學生選課信息(包括李維)

select * from SCT055where SNO in(select SNOfrom STUDENT055where SDEPT in(select SDEPTfrom STUDENT055where SNAME = '李維'));

3.對每個選修了課程的學生,查詢他獲得最高成績的課程號和成績

select SNO,CNO,GRADE from SCT055 where GRADE in(select MAX(GRADE)from SCT055group by SNO)

4.查詢與“王麗”職稱相同的其他女教師信息

select * from TEACHER055 where TITLE in(select TITLEfrom TEACHER055where TNAME = '王麗') and TSEX = '女';

5.查詢教師“周小平”和“王建寧”的授課信息,結果按照教師號升序顯示

select distinct TNO,CNO from SCT055 where TNO in(select TNOfrom TEACHER055where TNAME = '周小平' or TNAME = '王建寧') order by TNO;

6.查詢至少選修了學生“李維”所選的所有課程的其他學生信息

SQL語句中沒有蘊涵邏輯運算,但是可以利用謂詞演算等價轉換,它所表達的語義為:不存在這樣的課程y,學生李維選修了y,而學生x沒有選。

select * from STUDENT055 where SNO in (select distinct SNOfrom SCT055 STU1where not exists(select *from SCT055 STU2where STU2.SNO in(select SNO from STUDENT055where SNAME = '李維')andnot exists(select *from SCT055 STU3where STU3.SNO = STU1.SNO andSTU3.CNO = STU2.CNO)) );

7.查詢至少選修了“數據庫”和“C語言”課程的學生信息

intersect取交集

select * from STUDENT055 where SNO in(select SNO from SCT055where CNO in(select CNOfrom COURSE055where CNAME = '數據庫') ) intersect select * from STUDENT055 where SNO in(select SNO from SCT055where CNO in(select CNOfrom COURSE055where CNAME = 'C語言') )

8.查詢“計算機”學院與“電子”學院的女學生信息

union求并集

select * from STUDENT055 where SSEX = '女' and SDEPT = '計算機' union select * from STUDENT055 where SSEX = '女' and SDEPT = '電子'

9.查詢選修了“C語言”但是未選修“數據庫”課程的學生信息

差集

select * from STUDENT055 where SNO in(select SNO from SCT055where CNO in(select CNOfrom COURSE055where CNAME = 'C語言') ) except select * from STUDENT055 where SNO in(select SNO from SCT055where CNO in(select CNOfrom COURSE055where CNAME = '數據庫') )

10.查詢學分是3或4的課程信息

select * from COURSE055 where CREDIT = '3'unionselect * from COURSE055 where CREDIT = '4'

11.查詢無人選修的課程的詳細信息

select * from COURSE055 where CNO in(select CNOfrom COURSE055 ) except select * from COURSE055 where CNO in(select distinct CNOfrom SCT055 )

二、針對教學管理數據庫SCT,進行以下各種查詢:

(以下題目不限制查詢方法)

1.查詢選修了“CS-001”課程,且成績為第3到第5名的學生姓名,要求按照成績的降序輸出

按照邏輯應該是top5減去top2,但是這樣在SQL server2019里得不到正確答案,必須用top5減去top3才能得到第3到第5名。
沒有排序order by時 返回記錄默認從高到低,由于GRADE的index是降序,所以order by GRADE直接得到降序輸出

select top 5 SNAME,GRADE from STUDENT055,SCT055 where CNO = 'CS-001' andSCT055.SNO = STUDENT055.SNOexcept select top 3 SNAME,GRADE from STUDENT055,SCT055 where CNO = 'CS-001' andSCT055.SNO = STUDENT055.SNOorder by GRADE

2.查詢各門課程選修學生數占學生總數的百分比;(沒有學生選修的課程也要考慮)

convert轉換成浮點數相除,concat函數加上百分號,沒有學生選修的課程也要考慮所以使用左外連接。

select CNAME,concat(convert(float,count(SCT055.SNO))/(select count(*)from STUDENT055 )*100,'%') as '選課人數占比' from COURSE055 left join SCT055 on COURSE055.CNO = SCT055.CNO group by COURSE055.CNAME order by count (*) desc

3.查詢選課門數唯一的學生姓名(選課門數與其他學生都不相同)。(只考慮選修了課程的學生)

select SNAME from STUDENT055 where SNO in(select X.SNOfrom STUDENT055 X,SCT055where X.SNO = SCT055.SNOgroup by X.SNOhaving count(CNO) not in(select count(CNO)from STUDENT055 Y,SCT055where Y.SNO = SCT055.SNO and Y.SNO !=X.SNOgroup by Y.SNO) )

總結

以上是生活随笔為你收集整理的SQL server数据库实验(三)数据库的嵌套查询和集合查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。