一.實驗准備
1.復制實驗要求文件及“CREATE-TABLES.SQL”文件, 粘貼到本地機桌面。
2.啟動SQL-SERVER服務。
3. 運行查詢分析器, 點擊菜單《文件》/《打開》, 打開CREATE-TABLES.SQL, 並運行, 建立學生數據庫STUDB及表STUDENT, COURSE, SC。
4. 點擊菜單《文件》/《新建》, 建立一個空查詢窗口。開始實驗。
5.本次實驗環境是xp虛擬機,SQL-SERVER迷你版。
“CREATE-TABLES.SQL”文件 https://www.cnblogs.com/wkfvawl/p/10843788.html
二.實驗內容
1.查詢各個課程號及相應的選課人數(SC表,按課號分組)
SELECT CNO,COUNT(SNO)
FROM SC
GROUP BY CNO
2.查詢每個學生的學號和選課門數, 最高成績,最低成績,平均成績
SELECT SNO,COUNT(CNO),MAX(GRADE),MIN(GRADE),AVG(GRADE)
FROM SC
GROUP BY SNO
3.查詢各系的系名, 性別,人數, 平均年齡(按系名, 性別分組)
SELECT SDEPT,SSEX,COUNT(*),AVG(SAGE)
FROM STUDENT
GROUP BY SDEPT,SSEX
4. 查詢選修了>=3門課的學生號( HAVING )
SELECT SNO FROM SC GROUP BY SNO HAVING COUNT(*)>=3
5. 查詢選修學生人數>=2的課號
SELECT CNO FROM SC GROUP BY CNO HAVING COUNT(*)>=2
6 .查詢成績在75以上超過兩門課的學生號 ( WHERE+HAVING )
SELECT SNO FROM SC WHERE GRADE>75 GROUP BY SNO HAVING COUNT(*)>=2
7. 查詢每個學生及其選課情況 ( 連接STUDENT和SC )
SELECT *
FROM STUDENT,SC
WHERE STUDENT.SNO=SC.SNO
8. 查詢CS系學生的學生號,學生名,課號,成績(用連接)
SELECT STUDENT.SNO,SNAME,CNO,GRADE FROM STUDENT,SC WHERE STUDENT.SNO=SC.SNO AND SDEPT='CS'
9.查詢選1號課的學生號,學生名,成績(用連接)
SELECT STUDENT.SNO,SNAME,GRADE FROM STUDENT,SC WHERE STUDENT.SNO=SC.SNO AND CNO='1'
10.查詢每個學號的平均成績,總學分(連接SC和COURSE, 分組)
SELECT SNO,AVG(GRADE),SUM(CCREDIT) FROM COURSE,SC WHERE SC.CNO=COURSE.CNO AND GRADE>=60 GROUP BY SNO
11.查詢CS系學生的學生號,選課課號,課名,成績(三表連接)
SELECT STUDENT.SNO,COURSE.CNO,CNAME,GRADE FROM COURSE,SC,STUDENT WHERE STUDENT.SNO=SC.SNO AND SC.CNO=COURSE.CNO AND SDEPT='CS'
12. 查詢與“劉晨”在同一個系學習的學生號,姓名,系名。
SELECT SNO,SNAME,SDEPT FROM STUDENT WHERE SDEPT = ( SELECT SDEPT FROM STUDENT WHERE SNAME='劉晨' )
13. 查詢選1號課的學生號,學生名(用IN 子查詢)
SELECT SNO,SNAME FROM STUDENT WHERE SNO IN ( SELECT SNO FROM SC WHERE CNO='1' )
14. 查詢未選1號課的學生號,學生名(用NOT IN 子查詢)
SELECT SNO,SNAME FROM STUDENT WHERE SNO NOT IN ( SELECT SNO FROM SC WHERE CNO='1' )
15. 查詢沒有不及格的學生號,學生名(用NOT IN 子查詢)
SELECT SNO,SNAME FROM STUDENT WHERE SNO NOT IN ( SELECT SNO FROM SC WHERE GRADE<60 )
16. 查詢學生號,姓名,課號,成績, 要包括未選修課的學生(用外連接)
SELECT STUDENT.SNO,SNAME,CNO,GRADE
FROM STUDENT,SC
WHERE STUDENT.SNO*=SC.SNO
17. 查詢課號, 課名, 學號, 成績 , 包括未被選修的課.( 用外連接)
SELECT COURSE.CNO,COURSE.CNAME,SNO,GRADE
FROM COURSE,SC
WHERE COURSE.CNO*=SC.CNO
18.查詢比劉晨年齡大的學生號,姓名。(>子查詢)
SELECT SNO,SNAME FROM STUDENT WHERE SAGE > ( SELECT SAGE FROM STUDENT WHERE SNAME='劉晨' )
19. 查詢比信息系任意一個學生年齡小的學生姓名和年齡。(<ANY子查詢)
SELECT SNAME,SAGE FROM STUDENT WHERE SAGE <ANY ( SELECT SAGE FROM STUDENT WHERE SDEPT='IS' )
20.查詢選’數據庫原理’課的學號(用 IN子查詢)
SELECT SNO FROM STUDENT WHERE SNO IN ( SELECT SNO FROM SC WHERE CNO IN ( SELECT CNO FROM COURSE WHERE CNAME='數據庫原理' ) )
21. 查詢選’數據庫原理’課的學號,姓名(用 IN子查詢)
SELECT SNO,SNAME FROM STUDENT WHERE SNO IN ( SELECT SNO FROM SC WHERE CNO IN ( SELECT CNO FROM COURSE WHERE CNAME='數據庫原理' ) )