數據庫題目2

題目描述:
有一個學生課程數據庫,包括學生表 S、課程表 C 和學生成績表 SC,它們結構如下:
在這裏插入圖片描述
問題:
1) 查詢所有學過 “數據庫”的學生姓名,並且按姓名由大到小排序。
注:由於補考、重修,一個學生可能有多個考試成績,查詢結果只需要輸出一個。

**分析:**由於查詢結果只需要輸出一個,所以利用DISTINCT,具體使用方法參照SQL SELECT DISTINCT 語句
SELECT DISTINCT Sname
FROM S, C, SC
WHERE C.Cname = ‘數據庫’
AND C.Cno = SC.Cno
AND S.Sno = SC.Sno
ORDER BY Sname DESC;

2) 查詢所修學分超過80分的學生,輸出學生學號和所修學分。(注:要成績60分以上的)
SELECT Sno, SUM(Ccredit)
FROM C, SC WHERE
C.Cno = S.Cno
AND Grade >= 60
GROUP BY Sno
HAVING SUM(Ccredit) >= 80;

注:如果用了SUM,則通常會與GROUP BY和HAVING連用,其中GROUP BY和HAVING是好朋友。

3) 給SC表增加代課教師字段Teacher,數據類型爲字符串,長度20,非空
ALTER TABLE CS
ADD Teacher varchar(20) not null;

4) 創建每個學生學習總分的視圖,字段有學號、總分,視圖名SCSum
分析:這個比較冷門,參照SQL VIEW(視圖)
CREATE VIEW SCSum
AS SELECT Sno, SUM(Grade)
FROM SC
GROUP BY Sno;

5) 刪除SC表中,學號在學生表中不存在的記錄
DELETE FROM SC
WHERE NOT EXISTS
(SELECT 1 FROM S WHERE S.Sno = SC.Sno);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章