- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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语言非常重要。
在涉及的表格不多、条件不复杂时,将表格自然连接会比较方便;但是当条件复杂
您可能关注的文档
最近下载
- DB43T 1973-2020 涉路工程安全技术规范.docx VIP
- 高中美术课堂中数字教育资源的创新应用与教学效果研究教学研究课题报告.docx
- 光学(重排本)赵凯华课后思考题解答.docx VIP
- “一带一路”国家跨文化商务交际教程(第二版)课件 Unit 4 Türkiye.pptx VIP
- DBJ T13-200-2025福建省桩基础与地下结构防腐蚀技术标准.pdf VIP
- AutoCAD2022基础教程PPT完整全套教学课件.pptx
- 2024秋一年级上册道德与法治第7课《上课了,好好学》教案教学设计 .pdf VIP
- 机场管制塔台职能与其管制范围.ppt
- 阻碍民营医院发展的六点核心障碍-梅奥.pdf VIP
- 肝胆肿瘤介入诊疗新技术题库答案-2025年华医网继续教育答案.docx VIP
文档评论(0)