數據庫sql查詢習題


設教學數據庫Education有三個關系:

學生關系S(SNO,SNAME,AGE,SEX,SDEPT);//學號,姓名,年齡,性別,學生系別

學習關系SC(SNO,CNO,GRADE);//學號,課程號,成績

課程關系C(CNO,CNAME,CDEPT,TNAME);//課程號,課程名,課程系別,教師名

查詢問題:

1、查所有年齡在20歲以下的學生姓名及年齡。

SELECT SNAME,AGE FROM S WHERE AGE<20

2、查考試成績有不及格的學生的學號。

SELECT DISTINCT SNO FROM SC WHERE GRADE<60

3、查所年齡在20至23歲之間的學生姓名、系別及年齡。

SELECT SNAME,SDEPT,AGE FROM S WHERE AGE BETWEEN 20 AND 23

4、查計算機系、數學系、信息系的學生姓名、性別。

SELECT SNAME,SEX FROM S WHERE SDEPT IN ('CS','MA','IS')

5、查既不是計算機系、數學系、又不是信息系的學生姓名、性別。

SELECT SNAME,SEX FROM S WHERE SDEPT NOT IN ('CS','MA','IS')

6、查所有姓“劉”的學生的姓名、學號和性別。

SELECT SNAME,SNO,SEX
FROM S
WHERE SNAME LIKE '劉%'

7、查姓“上官”且全名為3個漢字的學生姓名。

SELECT SNAME
FROM S
WHERE SNAME LIKE '上官_'

8、查所有不姓“張”的學生的姓名。

SELECT SNAME
FROM S
WHERE SNAME NOT LIKE '張%'

9、查DB_Design課程的課程號。

SELECT CNO
FROM C
WHERE CNAME = 'DB_Design'

10、查缺考(即GRADE沒有賦值)的學生的學號和課程號。

SELECT SNO,CNO
FROM SC
WHERE GRADE IS NULL

11、查年齡為空值的學生的學號和姓名。

SELECT SNO,SNAME
FROM S
WHERE AGE IS NULL

12、查計算機系20歲以下的學生的學號和姓名。

SELECT SNO,SNAME
FROM S
WHERE SDEPT = 'CS' AND AGE<20

13、查計算機系、數學系、信息系的學生姓名、性別。

SELECT SNAME,SEX
FROM S
WHERE SDEPT IN ('CS','MA','IS')

14、查詢選修了C3課程的學生的學號和成績,其結果按分數的降序排列。

SELECT SNO,GRADE
FROM SC
WHERE CNO = 'C3'
ORDER BY GRADE DESC

15、查詢全體學生的情況,查詢結果按所在系升序排列,對同一系中的學生按年齡降序排列。

SELECT *
FROM S
ORDER BY SDEPT ASC,AGE DESC

16、查詢學生總人數。

SELECT COUNT(*)
FROM S

17、查詢選修了課程的學生人數。

SELECT COUNT(DISTINCT SNO)
FROM SC

18、計算選修了C1課程的學生平均成績。

SELECT AVG(GRADE)
FROM SC
WHERE CNO = 'C1'

19、查詢學習C3課程的學生最高分數。

SELECT MAX(GRADE)
FROM SC
WHERE CNO = 'C3'

20、查詢各個課程號與相應的選課人數。

SELECT CNO,COUNT(SNO)
FROM SC
GROUP BY CNO

21、查詢計算機系選修了3門以上課程的學生的學號。

SELECT SNO
FROM S,SC
WHERE SDEPT = 'CS' AND S.SNO = SC.SNO
GROUP BY SNO
HAVING COUNT(*)>3

22、求基本表S中男同學的每一年齡組(超過50人)有多少人?要求查詢結果按人數升序排列,人數相同按年齡降序排列。

SELECT AGE,COUNT(SNO)
FROM S
GROUP BY AGE
HAVING COUNT(*)>50
ORDER BY COUNT(*) ASC,AGE DESC

23、查詢每個學生及其選修課程的情況。

SELECT S.SNO,SNAME,AGE,SEX,SDEPT,CNO,GRADE
FROM S,SC
WHERE S.SNO = SC.SNO

24、查詢選修了C2課程且成績在90分以上的所有學生。

SELECT SNO
FROM SC
WHERE CNO = 'C2' AND GRADE >90

25、查詢每個學生選修的課程名及其成績。

SELECT CNAME,GRADE
FROM SC
GROUP BY SNO

26、統計每一年齡選修課程的學生人數。

SELECT AGE,COUNT(DISTINCT S.SNO)
FROM S,SC
WHERE S.SNO = SC.SNO
GROUP BY AGE

27、查詢選修了C2課程的學生姓名。

連接查詢

SELECT SNAME
FROM S,SC
WHERE CNO = 'C2' AND S.SNO = SC.SNO

嵌套查詢

SELECT SNAME
FROM S
WHERE SNO IN
    (SELECT SNO
     FROM SC
     WHERE CNO = 'C2')

28、查詢與“張三”在同一個系學習的學生學號、姓名和系別。

嵌套查詢

SELECT SNO,SNAME,SDEPT
FROM S
WHERE SDEPT IN
    (SELECT SDEPT
     FROM S
     WHERE SNAME = '張三')

自身連接

SELECT SNO,SNAME,SDEPT
FROM S S1, S S2
WHERE S1.SDEPT = S2.SDEPT AND S2.SNAME = '張三'

29、查詢選修課程名為“數據庫”的學生學號和姓名。

連接查詢

SELECT SNO,SNAME
FROM S,SC,C
WHERE CNO = '數據庫' AND S.SNO = SC.SNO AND C.CNO = SC.CNO

嵌套查詢

SELECT SNO,SNAME
FROM S
WHERE SNO IN
    (SELECT SNO
     FROM SC
     WHERE CNO IN
         (SELECT SNO
          FROM C
          WHERE CNAME = '數據庫'))


免責聲明!

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



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