數據庫——SQL-SERVER練習(1)連接與子查詢


一.實驗准備

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='數據庫原理'
   )
)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM