建立一個student數(shù)據(jù)庫包括:
學生:S(Sno,Sname,Ssex,Sage,Sdept),
課程:C(Cno,Cname,Term,Credit),
選修:SC(Sno,Cno,Score);
查詢選修了課程名為“數(shù)據(jù)庫系統(tǒng)”課程的學生的學號、姓名、成績:
SELECT S.Sno,Sname,Score FROM S,SC,C WHERE C.Cname IN ("數(shù)據(jù)庫系統(tǒng)");
查詢選修了全部課程的學生姓名和所在的專業(yè):
SELECT Sname,Sdept FROM S WHERE Sno IN (SELECT Sno FROM SC GROUP BY Sno HAVING COUNT(*)=(SELECT COUNT(*) FROM C));
查詢沒有選擇課程名為“數(shù)據(jù)庫系統(tǒng)”的學生姓名和專業(yè):
SELECT Sname,Sdept FROM S WHERE Sno NOT IN (SELECT Sno FROM SC WHERE Cno=(SELECT Cno FROM C WHERE Cname="數(shù)據(jù)庫系統(tǒng)"));
檢索所有比唐婉年齡大的學生的姓名退疫、年齡和性別:
SELECT Sname,Sage,Ssex FROM S WHERE Sage >(SELECT Sage FROM S WHERE Sname="唐婉") ORDER BY Sage ASC;
檢索選修了課程號為“2”課程的學生中成績最高的學生的學號:
SELECT Sno FROM SC WHERE SC.Cno="2" AND Score>=ALL(SELECT Score FROM SC WHERE Cno="2");
檢索選修了4門以上課程的學生學號和總成績(不統(tǒng)計不及格的課程)档插,并要求按照總承成績的降序排列:
SELECT Sno,Score FROM SC GROUP BY Cno HAVING Cno>'4' AND Score>='60' ORDER BY Score DESC;
檢索李白同學沒有選修的課程的課程號:
SELECT Cno FROM C WHERE NOT EXISTS(SELECT * FROM S,SC WHERE S.Sno=SC.Sno AND SC.Cno=C.Cno AND Sname='李白');
注意:
- group by 的用法,可用于分類,結(jié)合count()可以查詢出某一類的個數(shù)。
- order by 可以用來排序,asc表示升序排列傲诵,desc表示降序排列。
- 表示最高的用法>=all(***);疑問其和max()箱硕;的區(qū)別拴竹。
- 理清楚從哪張表里面去取數(shù)據(jù)最方便,一步步聯(lián)想推導可以查出想要的結(jié)果剧罩,注意函數(shù)的用法栓拜。
越努力越幸運!惠昔!
2017年4月26日