北邮大三下数据库实验报告3.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE/NUMPAGES

北京邮电大学

实验报告

课程名称数据库系统原理

实验内容实验(三)

实验名称数据查询实验

班级2013211*** 姓名***

指导老师卢向群 成绩_________

2016年4月20日

实验三数据查询实验

实验目的

通过对实验二中建立的数据库关系表和视图的各种查询的操作,加深对SQL语言和TransactSQL查询语言的了解,掌握相关查询语句的语法和使用方法。

实验内容

数据库关系表查询:

简单的查询操作,包括单表的查询、选择条件、结果排序等的练习;

多表的连接查询,包括等值连接、自然连接等;

复杂的查询操作,包括使用分组函数等库函数的查询操作;

练习带有IN、比较符的嵌套查询。

具体内容包括:

简单查询:

查询班号为g99401班的学生的学号和姓名;

表中没有该班级的学生,故查询结果为空。

(2)查询“数据库开发技术”课程的学分;

(3)查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;

(4)查询学号为“g9940205”的学生选修的课程编号和成绩;

(5)查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。

在多表连接的查询实验中,在SQLSERVER提供的交互式语言环境下用TransactSQL语句完成以下查询操作:

(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;

该题与上一题的差别在于学生姓名,这一属性与成绩不在同一张表中,故需要对两张表做自然连接。

(2)查询所有学生的学号、姓名、选修的课程名称和成绩;

需要用到三张表,把三张表做自然连接,语句如下:

查询结果如下:

(3)查询计算机科学系林红同学选修的课程名称、学分和成绩。(考试成绩=60有学分,否则无学分。)

这个查询看似困难,实际上只是因为设计的表格较多,所以麻烦而已,只要将五张表自然连接就可以了。

查询结果为空,说明计算机科学系没有叫“林红”的学生。

在复杂查询实验中,在SQLSERVER提供的交互式语言环境下用TransactSQL语句完成以下查询操作:

(1)查询至少选修了三门课程的学生的学号和姓名;

先根据学生学号来分组,找出每个学生选的所有课程,再计算其选课数量。

(2)查询选修课程号为“dep04_b001”的学生的平均成绩;

(3)查询所有学生的学号和他选修课程的最高成绩,要求他的选修课程中没有成绩为空的。

与上题类似,先根据学生id分组,再在分组中选出最高成绩。

查询严为老师2001/2002学年教的软件开发技术课程的最高成绩及此学生的学号、姓名、班级。

这题比较困难,不但涉及的表格很多,查找条件也不容易。原本想用max来做,但是会出现分组不正确的情况,所以改成了嵌套比较。

查询数据库开发技术课程用过的教材名称,作者和出版社。

(6)查询计算机科学系讲授过数据库开发技术的老师姓名和职称。

在嵌套查询实验中,在SQLSERVER提供的交互式语言环境下用TransactSQL语句完成以下查询操作,要求写嵌套查询语句:

(1)查询选修了电磁波工程的学生的学号和姓名;

这个查询设计三张表,可以将三张表做自然连接,也可以用嵌套的方法。本题我采用的是嵌套查询。先选出选修了该课的所有学生学号,再在student表中投影他们的姓名。由于没有选了“电磁波工程”这门课的学生,我换了“软件开发技术”这门课来验证自己的查询语句。

(2)查询没有选修电磁波工程的学生的学号和姓名;

与上题同样的方法,只是条件相反,加了一个“not”。

(3)查询至少选修了学号为“g9940201”的学生所选修的所有课程的学生的学号和姓名。

这道题比较难,用到了三层嵌套的相关子查询。

建立如下视图:

学生选修课程信息视图,包括以下内容:

学生学号、姓名、所在系、授课老师姓名、课程名称、课程教材名称、出版社、学分、选课成绩

视图如下:

2)修改以上视图,增加学生所在班级信息。

SQL语言如下,在5(1)的基础上增加了class表里的几个属性,和student,class表的连接

视图如下:

3)对以上视图进行相关的查询操作:

(1)查询选修了计算机基础的学生的学号和成绩:

(2)查询所有学生的学号、姓名、选修的课程名称和成绩:

查询选修了乔红老师课程的学生的学号和姓名、课程名称:

实验总结:

建立视图可以使用资源管理器,但是有个弊端:当涉及多张表时,默认做笛卡尔乘积,没法做自己想要的连接。所以掌握SQL语言非常重要。

在涉及的表格不多、条件不复杂时,将表格自然连接会比较方便;但是当条件复杂

文档评论(0)

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

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

1亿VIP精品文档

相关文档