为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩
1. 使用标准SQL嵌套语句查询选修课程名称为税收基础的学员学号和姓名
Select SN,SD FROM S
Where [S#] IN ( Select [S#] FROM C,SC
Where C.[C#]=SC.[C#] =N'税收基础')
2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
Select , FROM S,SC
Where S.[S#]=SC.[S#] AND SC.[C#]='C2'
3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
Select SN,SD FROM S
Where [S#] NOT IN
( Select [S#] FROM SC Where [C#]='C5')
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
经过调试验证的正确答案:
SELECT SN, SD FROM S
WHERE S#
IN (SELECT #
FROM SC RIGHT JOIN C
ON # = #
GROUP BY #) --在结果集中以学生分组,分组后的 #选课数=#课程数 即为全部课程
HAVING COUNT(distinct(#)) --注意:一个学生同一门课程可能有多条成绩记录,需要distinct
= ( select count(*) from C )
--注意:HAVING条件不能用COUNT(distinct(#)) = COUNT(distinct(#)
)--子查询获得选修全部课程的学生学号
5. 查询选修了课程的学员人数
Select 学员人数=COUNT(DISTINCT [S#]) FROM SC
6. 查询选修课程超过5门的学员学号和所属单位
Select SN,SD FROM S
Where [S#] IN (Select [S#] FROM SC GROUP BY [S#])
题目2:
======
已知关系模式:
S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名
C (AME,CTEACHER) O AME 为课程名,CTEACHER 为任课教师
SC(O,SCGRADE) 选课关系。SCGRADE 为成绩
1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
Select SNAME FROM S
Where NOT EXISTS ( Select * FROM SC,C
Where O=O
AME='李明'
AND =)
2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
Select ,,AVG_SCGRADE=AVG()
FROM S , SC ,
数据库常用面试题+答案 来自淘豆网www.taodocs.com转载请标明出处.