数据库第三章习参考答案.docVIP

  • 128
  • 0
  • 约1.42万字
  • 约 5页
  • 2016-10-12 发布于贵州
  • 举报
数据库第三章习参考答案

3-2 对于教务管理数据库的三个基本表 S(SNO,SNAME, SEX, AGE,SDEPT) SC(SNO,CNO,GRADE) C(CNO,CNAME,CDEPT,TNAME) 试用SQL的查询语句表达下列查询: ⑴ 检索LIU老师所授课程的课程号和课程名。 ⑵ 检索年龄大于23岁的男学生的学号和姓名。 ⑶ 检索学号为200915146的学生所学课程的课程名和任课教师名。 ⑷ 检索至少选修LIU老师所授课程中一门课程的女学生姓名。 ⑸ 检索WANG同学不学的课程的课程号。 ⑹ 检索至少选修两门课程的学生学号。 ⑺ 检索全部学生都选修的课程的课程号与课程名。 ⑻ 检索选修课程包含LIU老师所授课程的学生学号。 解: ⑴ SELECT C#,CNAME FROM C WHERE TEACHER=’LIU’; ⑵ SELECT S#,SNAME FROM S WHERE AGE23 AND SEX=’M’; ⑶ SELECT CNAME,TEACHER FROM SC,C WHERE SC.C#=C.C# AND S#=’200915146’ ⑷ SELECT SNAME (连接查询方式) FROM S,SC,C WHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=’F’ AND TEACHER=’LIU’; 或: SELECT SNAME (嵌套查询方式) FROM S WHERE SEX=’F’AND S# IN (SELECT S# FROM SC WHERE C# IN (SELECT C# FROM C WHERE TEACHER=’LIU’)) 或: SELECT SNAME (存在量词方式) FROM S WHERE SEX=’F’ AND EXISTS(SELECT* FROM SC WHERE SC.S#=S.S# AND EXISTS(SELECT * FROM C WHERE C.C#=SC.C# AND TEACHER=’LIU’)) ⑸ SELECT C# FROM C WHERE NOT EXISTS (SELECT * FROM S,SC WHERE S.S#=SC.S# AND SC.C#=C.C# AND SNAME=’WANG)); ⑹ SELECT DISTINCT X.S# FROM SC AS X,SC AS Y WHERE X.S#=Y.S# AND X.C#!=Y.C#; ⑺ SELECT C#.CNAME FROM C WHERE NOT EXISTS (SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE S#=S.S# AND C#=C.C#)); ⑻ SELECT DISTINCT S# FROM SC AS X WHERE NOT EXISTIS (SELECT * FROM C WHERE TEACHER=’LIU’ AND NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.S#=X.S# AND Y.C#=C.C#)); 3-3 试用SQL查询语句表达下列对3.2题中教务管理数据库的三个基本表S、SC、C查询: ⑴ 统计有学生选修的课程门数。 ⑵ 求选修4号课程的学生的平均年龄。 ⑶ 求LIU老师所授课程的每门课程的学生平均成绩。 ⑷ 统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 ⑸ 检索学号比WANG同学大,而年龄比他小的学生姓名。 ⑹ 检索姓名以WANG打头的所有学生的姓名和年龄。 ⑺ 在SC中检索成绩为空值的学生学号和课程号。 ⑻ 求年龄大于女同学平均年龄的男学生姓名和年龄。 ⑼ 求年龄大于所有女同学年龄的男学生姓名和年龄。 解: ⑴ SELECT COUNT(DISTINCT C#) FROM SC; ⑵ SELECT AVG(AGE) FROM S,SC WHERE S.S#=SC.S# AND C#=’4’AND SEX=’F’; ⑶ SELECT C.C#,AVG(GRADE) FROM SC,C WHERE SC.C#=C.C# AND TEACHER=’LIU’; ⑷ SELECT C#,COUNT(S#) FROM SC GROUP BY C# HAVING COUNT(*)10 ORDER BY 2 DESC,1; ⑸ SELECT SNAME FRO

文档评论(0)

1亿VIP精品文档

相关文档