【正文】
齡降序排列。 SELECT Sage,COUNT(Sno) FROM S WHERE Ssex=39。M39。 GROUP BY Sage HAVING COUNT(*) 50 ORDER BY 2,Sage DESC;二、多表查詢聯(lián)接查詢例23:查詢每個(gè)學(xué)生及其選修課程的情況。 SELECT ,Sname,Sage,Ssex,Sdept,Cno,Grade FROM S, SC WHERE =; 例24:查詢選修了C2課程且成績(jī)?cè)?0分以上的所有學(xué)生。 SELECT ,Sname FROM S,SC WHERE = AND =‘C2’ AND 90。例25:查詢每個(gè)學(xué)生選修的課程名及其成績(jī)。 SELECT ,Sname,Cname, FROM S,SC,C WHERE = AND = 例26:統(tǒng)計(jì)每一年齡選修課程的學(xué)生人數(shù)。 SELECT Sage,COUNT(DISTINCT ) FROM S,SC WHERE = GROUP BY S; 由于要統(tǒng)計(jì)每一個(gè)年齡的學(xué)生人數(shù),因此要把滿足WHERE子句中條件的查詢結(jié)果按年齡分組,在每一組中的學(xué)生年齡相同。此時(shí)的SELECT子句應(yīng)對(duì)每一組分開進(jìn)行操作,在每一組中,年齡只有一個(gè)值,統(tǒng)計(jì)的人數(shù)是這一組中的學(xué)生人數(shù)。嵌套查詢(1)帶有IN謂詞的子查詢 指父查詢與子查詢之間用IN進(jìn)行聯(lián)接,判斷某個(gè)屬性列值是否在子查詢的結(jié)果中。例27:查詢選修了C2課程的學(xué)生姓名。 SELECT Sname FROM S WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno=‘C2’)。 例28:查詢與“張三”在同一個(gè)系學(xué)習(xí)的學(xué)生學(xué)號(hào)、姓名和系別。分析:(1)確定“張三”所在的系;(2)查找所有在X系學(xué)習(xí)的學(xué)生。 SELECT Sdept FROM S WHERE Sname=‘張三’; SELECT Sno,Sname,Sdept FROM S WHERE Sdept=‘X’FROM S AS S1, S AS S2WHERE = AND =‘張三’ 把第一步查詢嵌入到第二步查詢中,用以構(gòu)造第二步查詢的條件。 SELECT Sno,Sname,Sdept FROM S WHERE Sdept IN (SELECT Sdept FROM S WHERE Sname=‘張三’);例29:查詢選修課程名為“數(shù)據(jù)庫(kù)”的學(xué)生學(xué)號(hào)和姓名。 本查詢涉及到學(xué)號(hào)、姓名和課程名三個(gè)屬性,分別存放在S和C表中,但S和C表沒有直接聯(lián)系,必須通過(guò)SC表建立它們二者的聯(lián)系。 C → SC → S基本思路:(1)首先在C表中找出“DB”課程的課程號(hào)Cno;(2)然后在SC表中找出Cno等于第一步給出的Cno 集合中的某個(gè)元素Cno;(3)最后在S關(guān)系中選出Sno等于第二步中Sno 集合中某個(gè)元素的元組,取出Sno 和Sname送入結(jié)果表列。 SELECT Sno,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DB’));聯(lián)接查詢方式(2)帶有