数据库原理例题及解答.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
. . 实验目的: 了解SQL语言的特点和基本概念。 能够针对某种具体的DBMS(本实验采用Access2003),熟练地运用单表查询、连接查询、嵌套查询、集合查询等各种SQL查询语句对数据库中的表进行操作。 对相同的查询要求,能够采用多种查询方法实现,并能分析各种方法的优劣, 从中选择合适的方法。 实验过程: Print the names of professors who work in departments that have fewer than 50 PhD students. 解:(1)分析:本题是查询在博士生人数少于50个人的系工作的教师名字。查询教授名字可以通过prof表,而所查询的教授名字是有限制条件的, 他所工作的系名要属于特定的集合(所有系名的一个子集),显然这个子集可以通过查询dept表获得,所以带有谓词in的嵌套子查询可以实现题目要求。 (2)语句实现: SELECT Prof.字段1 FROM Prof WHERE Prof.字段2 IN (SELECT Dept.字段1 FROM Dept WHERE Dept.字段2 50); ****************************************************; (3)查询结果: Print the name(s) of student(s) with the lowest gpa 解:(1)分析:本题是查询成绩点最低的学生的名字。最低的成绩点可以在student表中通过函数min(gpa)获得,而所查询学生的名字的限制为成绩点等于min(gpa), 因此可用如下嵌套子查询实现。 (2)语句实现: SELECT Student.字段2 FROM Student WHERE Student.字段6 IN(SELECT min(Student.字段6)FROM Student); ****************************************************; (3)查询结果: For each Computer Sciences class, print the cno, sectno, and the average gpa of the student enrolled in the class. 解:(1)分析:本题是查询计算机科学系的所有班的课程号、分班号、班上学生的平均绩点。计算机科学系的所有班可以通过section表获得, 而通过enroll表可以由section表中的dname, cno, sectno获得班上所有学生的sid,而通过sid可以在student表中查得学生成绩点,最后由cno, sectno进行分组,并用函数avg(gpa),获得每组的平均成绩。所以可用三个表的连接查询,并适当分组实现查询要求。 (2)语句实现: SELECT Section.字段2,Section.字段3,avg(Student.字段6) AS avStudent字段6 FROM [Section],Enroll,Student WHERE ((Section.字段1=Computer Sciences)and(Section.字段2=Enroll.字段4)and(Enroll.ID=Student.ID)) GROUP BY Section.字段2,Section.字段3; ****************************************************; (3)查询结果: 4、Print the course names, course numbers and section numbers of all classes with less than six students enrolled in them. 解:(1)分析:本题是查询所有班级人数少于6的课程名,课程号,分班号。通过section表可以查询出所有的班,其中的课程名可由查询所得的dname, cno在course表中确定,因为与班级人数有关,还需将section表和enroll表做连接,并按section.cno, section.dname, section.sectno分组以获取所有班的人数。所以可用连接查询、嵌套查询,并适当分组来实现查询要求。 (2)语句实现: SELECT (SELECT Course.字段2 from C

文档评论(0)

hmwn621 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档