文章目錄
- 1.查詢每個學生的選課情況
- 2.查詢每個學生及其選修課程的情況, 包括沒有選修課程的學生
- 3.查詢每門課的選課人數,包括選課人數為0的課程。
- 4.查詢選修了”10010”号課程的學生姓名。
- 5.查詢選修了“計算機基礎”這門課的學生學号和學生姓名
- 6.查詢選修“計算機基礎”這門課成績在80分以上的學生學号,姓名。
- 7.查詢與“王磊”在同一個系的學生資訊
- 8.查詢每個學生超過他選修課平均成績的課程号。
- 9.查詢其他系中比“計算機系”某一學生年齡小的學生姓名和年齡(分别使用ANY謂詞和MAX函數完成)。
- 10.查詢其他系中比“計算機系”所有學生年齡都小的學生姓名及年齡(分别使用ALL謂詞和MIN函數完成)。
- 11.查詢選修了10001号課程的學生姓名(使用EXISTS謂詞)
- 12.查詢沒有選修10001号課程的學生姓名。
- 13.查詢選修了全部課程的學生學号和姓名
1.查詢每個學生的選課情況
使用内連接配接和外連接配接
select
*
from
student
inner join//内連接配接
sc
on
student.sno=sc.sno
2.查詢每個學生及其選修課程的情況, 包括沒有選修課程的學生
select
*
from
sc
left join//左連接配接
sc
on
student.sno=sc.sno
3.查詢每門課的選課人數,包括選課人數為0的課程。
SELECT
Course.Cno,COUNT(SC.Cno)
FROM
Course
LEFT JOIN
SC
ON
Course.Cno=SC.Cno
GROUP BY Course.Cno
4.查詢選修了”10010”号課程的學生姓名。
SELECT Sname
FROM Student
WHERE Sno IN
(SELECT Sno
FROM SC
WHERE Cno='10010')
5.查詢選修了“計算機基礎”這門課的學生學号和學生姓名
SELECT Sno,Sname
FROM Student
WHERE Sno IN
(SELECT Sno
FROM SC
WHERE Cno IN
(SELECT Cno
FROM Course
WHERE Cname='計算機基礎'))
6.查詢選修“計算機基礎”這門課成績在80分以上的學生學号,姓名。
SELECT Sno,Sname
FROM Student
WHERE Sno IN
(SELECT Sno
FROM SC
WHERE Score>90 AND Cno IN
(SELECT Cno
FROM Course
WHERE Cname='計算機基礎'))
7.查詢與“王磊”在同一個系的學生資訊
SELECT Sno,Sname
FROM Student
WHERE Sdept IN
(SELECT Sdept
FROM Student
WHERE Sname='王磊')
8.查詢每個學生超過他選修課平均成績的課程号。
SELECT Sno,Cno
FROM SC x
WHERE Score>=
(SELECT AVG(Score)
FROM SC y
WHERE x.Sno=y.Sno)
9.查詢其他系中比“計算機系”某一學生年齡小的學生姓名和年齡(分别使用ANY謂詞和MAX函數完成)。
--ANY謂詞
SELECT Sname,Sage
FROM Student
WHERE Sdept!='計算機系' AND Sage<ANY
(SELECT Sage
FROM Student
WHERE Sdept='計算機系')
--MAX函數
SELECT Sname,Sage
FROM Student
WHERE Sdept!='計算機系' AND Sage<
(SELECT MAX(Sage)
FROM Student
WHERE Sdept='計算機系')
10.查詢其他系中比“計算機系”所有學生年齡都小的學生姓名及年齡(分别使用ALL謂詞和MIN函數完成)。
--ALL謂詞
SELECT Sname,Sage
FROM Student
WHERE Sdept!='計算機系' AND Sage<ALL
(SELECT Sage
FROM Student
WHERE Sdept='計算機系')
--MIN函數
SELECT Sname,Sage
FROM Student
WHERE Sdept!='計算機系' AND Sage<
(SELECT MIN(Sage)
FROM Student
WHERE Sdept='計算機系')
11.查詢選修了10001号課程的學生姓名(使用EXISTS謂詞)
SELECT Sno,Sname
FROM Student
WHERE EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='10001')
12.查詢沒有選修10001号課程的學生姓名。
SELECT Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE Sno=Student.Sno AND Cno='10001')
13.查詢選修了全部課程的學生學号和姓名
SELECT Sno,Sname
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM Course
WHERE NOT EXISTS
(SELECT *
FROM SC
WHERE SC.Sno=Student.Sno AND Course.Cno=SC.Cno))