常用測試題(SQL Server)

          Posted on 2007-08-24 09:12 Jaunt 閱讀(212) 評論(0)  編輯  收藏 所屬分類: Database
          問題描述:

          為管理崗位業(yè)務(wù)培訓(xùn)信息,建立3個表:
          S (S#,SN,SD,SA) S#,SN,SD,SA 分別代表學(xué)號、學(xué)員姓名、所屬單位、學(xué)員年齡
          C (C#,CN ) C#,CN 分別代表課程編號、課程名稱
          SC ( S#,C#,G ) S#,C#,G 分別代表學(xué)號、所選修的課程編號、學(xué)習(xí)成績
          1. 使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程名稱為’稅收基礎(chǔ)’的學(xué)員學(xué)號和姓名

          --實現(xiàn)代碼:

          Select SN,SD FROM S
          Where [S#] IN(
          Select [S#] FROM C,SC
          Where C.[C#]=SC.[C#]
          AND CN=N'稅收基礎(chǔ)')

          2. 使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修課程編號為’C2’的學(xué)員姓名和所屬單位

          --實現(xiàn)代碼:

          Select S.SN,S.SD FROM S,SC

          Where S.[S#]=SC.[S#]

          AND SC.[C#]='C2'

          3. 使用標(biāo)準(zhǔn)SQL嵌套語句查詢不選修課程編號為’C5’的學(xué)員姓名和所屬單位

          --實現(xiàn)代碼:

          Select SN,SD FROM S

          Where [S#] NOT IN(

          Select [S#] FROM SC

          Where [C#]='C5')

          4. 使用標(biāo)準(zhǔn)SQL嵌套語句查詢選修全部課程的學(xué)員姓名和所屬單位
          --實現(xiàn)代碼:

          Select SN,SD FROM S

          Where [S#] IN(

          Select [S#] FROM SC

          RIGHT JOIN

          C ON SC.[C#]=C.[C#] GROUP BY [S#]

          HAVING COUNT(*)=COUNT([S#]))

          5. 查詢選修了課程的學(xué)員人數(shù)

          --實現(xiàn)代碼:

          Select 學(xué)員人數(shù)=COUNT(DISTINCT [S#]) FROM SC

          6. 查詢選修課程超過5門的學(xué)員學(xué)號和所屬單位

          --實現(xiàn)代碼:

          Select SN,SD FROM S

          Where [S#] IN(

          Select [S#] FROM SC

          GROUP BY [S#]

          HAVING COUNT(DISTINCT [C#])>5)

          題目2

          問題描述:

          已知關(guān)系模式:

          S (SNO,SNAME) 學(xué)生關(guān)系。SNO 為學(xué)號,SNAME 為姓名

          C (CNO,CNAME,CTEACHER) 課程關(guān)系。CNO 為課程號,CNAME 為課程名,CTEACHER 為任課教師

          SC(SNO,CNO,SCGRADE) 選課關(guān)系。SCGRADE 為成績

          1. 找出沒有選修過“李明”老師講授課程的所有學(xué)生姓名

          --實現(xiàn)代碼:

          Select SNAME FROM S

          Where NOT EXISTS(

          Select * FROM SC,C

          Where SC.CNO=C.CNO

          AND CNAME='李明'

          AND SC.SNO=S.SNO)

          2. 列出有二門以上(含兩門)不及格課程的學(xué)生姓名及其平均成績

          --實現(xiàn)代碼:

          Select S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)

          FROM S,SC,(

          Select SNO

          FROM SC

          Where SCGRADE<60

          GROUP BY SNO

          HAVING COUNT(DISTINCT CNO)>=2

          )A Where S.SNO=A.SNO AND SC.SNO=A.SNO

          GROUP BY S.SNO,S.SNAME

          3. 列出既學(xué)過“1”號課程,又學(xué)過“2”號課程的所有學(xué)生姓名

          --實現(xiàn)代碼:

          Select S.SNO,S.SNAME

          FROM S,(

          Select SC.SNO

          FROM SC,C

          Where SC.CNO=C.CNO

          AND C.CNAME IN('1','2')

          GROUP BY SNO

          HAVING COUNT(DISTINCT CNO)=2

          )SC Where S.SNO=SC.SNO

          4. 列出“1”號課成績比“2”號同學(xué)該門課成績高的所有學(xué)生的學(xué)號

          --實現(xiàn)代碼:

          Select S.SNO,S.SNAME

          FROM S,(

          Select SC1.SNO

          FROM SC SC1,C C1,SC SC2,C C2

          Where SC1.CNO=C1.CNO AND C1.NAME='1'

          AND SC2.CNO=C2.CNO AND C2.NAME='2'

          AND SC1.SCGRADE>SC2.SCGRADE

          )SC Where S.SNO=SC.SNO
          5. 列出“1”號課成績比“2”號課成績高的所有學(xué)生的學(xué)號及其“1”號課和“2”號課的成績

          --實現(xiàn)代碼:

          Select S.SNO,S.SNAME,SC.[1號課成績],SC.[2號課成績]

          FROM S,(

          Select SC1.SNO,[1號課成績]=SC1.SCGRADE,[2號課成績]=SC2.SCGRADE

          FROM SC SC1,C C1,SC SC2,C C2

          Where SC1.CNO=C1.CNO AND C1.NAME='1'

          AND SC2.CNO=C2.CNO AND C2.NAME='2'

          AND SC1.SCGRADE>SC2.SCGRADE

          )SC Where S.SNO=SC.SNO
          主站蜘蛛池模板: 吕梁市| 恩平市| 乌恰县| 会同县| 扎鲁特旗| 旺苍县| 神农架林区| 周宁县| 无锡市| 望奎县| 澜沧| 祥云县| 揭东县| 建宁县| 南宫市| 齐齐哈尔市| 新宾| 昌邑市| 贵州省| 沁水县| 黄浦区| 宜黄县| 武威市| 岢岚县| 隆昌县| 阿勒泰市| 栾川县| 水城县| 尼玛县| 静宁县| 石阡县| 兴仁县| 陆川县| 南阳市| 明水县| 贺兰县| 荔浦县| 通榆县| 屏东县| 巴东县| 五寨县|