数据库SQL实验报告-交互式查询(连接查询及嵌套查询)_第1页
数据库SQL实验报告-交互式查询(连接查询及嵌套查询)_第2页
数据库SQL实验报告-交互式查询(连接查询及嵌套查询)_第3页
数据库SQL实验报告-交互式查询(连接查询及嵌套查询)_第4页
数据库SQL实验报告-交互式查询(连接查询及嵌套查询)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验4SQL交互式查询——连接查询及嵌套查询实验日期和时间:实验室:班级:学号:姓名:实验环境:硬件:计算机软件:SQLsever2000,windows操作系统相关知识链接:连接查询有: 广义笛卡尔积 等值连接(含自然连接) 非等值连接查询 自身连接查询 外连接查询 复合条件连接查询实验主要任务:在实验2建立的数据库中,用SQL语句完成以下查询任务查询所有学生的选课情况,列出学号、姓名、课程号、课程名、成绩、学分。查询所有低于60分的学生成绩记录,并按学号排序列表,列出学号、姓名、课程号、课程名、成绩。查询选修2号课程且成绩在90分以上的所有学生的学号、姓名、成绩。查询“计算机系”职称为“教授”的老师的记录。查询由“计算机系”的开课的课程。查询“数据结构”的先行课名称。查询同时选修了课程号为“1”和“2”的学生学号。查询计算机系全体学生的“数据结构”成绩,列出学号、姓名、课程名、成绩,并按成绩降序列表。查询其他系中比信息系所有学生年龄都小的学生姓名及年龄。查询没有选修1号课程的学生。查询选修了全部课程的学生姓名。查询学校中与老师同名的学生姓名查询每一门课的间接先修课〔即先修课的先修课〕。查询每个学生及其选修课程的情况包括没有选修课程的学生,列出学号、姓名、课程号、课程名、成绩、学分,没有选修课程的学生只列出学号、姓名。〔提示:用外连接〕。以下内容填写请依照查询1逐题自己复制或插入新行,再将题目粘贴到适当位置,然后在执行代码成功后,截取屏幕上的运行代码及结果,贴到适宜位置,并填写结果是否正确,最后对所采用的方法进行分析。每题格式相同,请参照下面的查询1。查询1:查询所有学生的选课情况,列出学号、姓名、课程号、课程名、成绩、学分代码及执行结果:from学生,选课,课程结果是否正确:正确方法分析:三个表的连接查询2:查询所有低于80分的学生成绩记录,并按学号排序列表,列出学号、姓名、课程号、课程名、成绩。代码及执行结果:from学生,选课,课程where选课.课程号=课程.课程号and学生.学号=选课.学号and选课.成绩<80结果是否正确:正确方法分析:三个表的连接orderby排序,默认为升序查询3:查询选修0002号课程且成绩在90分以上的所有学生的学号、姓名、成绩代码及执行结果:from学生,选课where学生.学号=选课.学号and选课.课程号='0002'and成绩>90结果是否正确:正确方法分析:两个表的连接查询4:查询“计算机系”职称为“教授”的老师的记录代码及执行结果:select教师.*from系,教师结果是否正确:正确方法分析:两个表的等值连接查询5:查询由“计算机系”的开课的课程代码及执行结果:select选课.课程号,课程.课程名,系.系名as所在系from选课,系,课程where系.系名='计算机结果是否正确:正确方法分析:三个表的连接查询6:查询“数据结构”的先行课名称代码及执行结果:selecta.课程名,b.课程名as先行课from课程a,课程bwherea.先行课=b.课程号anda.课程名='数据结构'结果是否正确:正确方法分析:给表重命名,然后两个新表连接查询查询7:查询同时选修了课程号为“0001”和“0002”的学生学号代码及执行结果select学号as选修了1和2号课程的学生的学号from选课where学号in(select学号from选课where课程号='0001')and课程号='0002'结果是否正确:正确方法分析:嵌套查询查询8:查询计算机系全体学生的“数据结构”成绩,列出学号、姓名、课程名、成绩,并按成绩降序列表代码及执行结果:select选课.学号,学生.姓名,课程.课程名,选课.成绩from学生,课程,选课,系where系.系名='计算机'and课程.课程名='数据结构'and课程.课程号=选课.课程号orderby选课.成绩DESC结果是否正确:正确方法分析:四个表的等值连接orderby排序,默认为升序,可以使用ASC,降序可以使用DESC查询9:查询其他系中比信管系所有学生年龄都小的学生姓名及年龄代码及执行结果:select学生.姓名,year(getdate())-year(出生日期)as年龄from学生,系where学生.系编号=系.系编号and系.系名<>'信管'andyear(getdate())-year(出生日期)<all(selectyear(getdate())-year(出生日期)from学生,系where系.系编号=学生.系编号and系.系名='信管')结果是否正确:正确方法分析:两个表的连接使用了嵌套查询使用了all,表示所有的都需要满足查询10:查询没有选修0001号课程的学生代码及执行结果:from学生,选课where学生.学号=选课.学号and学生.学号notin(selectdistinct学生.学号from学生,选课where课程号='0001'and学生.学号=选课.学号)结果是否正确:正确方法分析:两个表的连接嵌套查询,distinct删除重复的查询11:查询选修了全部课程的学生姓名代码及执行结果:select学生.姓名from学生where学号in(select学号from选课groupby学号havingcount(*)=(selectcount(*)from课程))结果是否正确:正确方法分析:使用选课数目相同查询也可以使用exists关键字查询查询12:查询学校中与老师同名的学生姓名代码及执行结果:from学生,教师结果是否正确:正确方法分析:两个表的连接查询13:查询每一门课的间接先修课〔即先修课的先修课〕代码及执行结果:selecta.课程名,b.课程名直接先行课,c.课程名间接先行课from课程a,课程b,课程c结果是否正确:正确方法分析:给同一个表重命名用三个新表连接查询查询14:查询每个学生及其选修课程的情况包括没有选修课程的学生,列出学号、姓名、课程号、课程名、成绩、学分,没有选修课程的学生只列出学号、姓名。〔提示:用外连接〕代码及执行结果:结果是否正确:正确方法分析:使用左外连接使用左外连接的结果再与第三个表左外连接总结你在完成查询任务1-14的过程中遇到的主要问题及解决的方法:不在表内查询所以查询时候提示对象名无效使用语句:use+数据库名这样就可以查询了总结本次实验涉及到的根本原理:(语法等)多表连接嵌套查询左外连接表内连接关键字:all,DESC,exists等本次实验小结:exists的用法还是不太熟悉要求:报告格式和内容要求:

a.内容和格式整齐。大标题采用黑体四号字加粗,小标题采用小四号字加粗。正文采用五号宋体,单倍行距。

b.贴图时请剪裁到适当大小,要保证打印时可以看清,但也不要太大以免“越界”。

c.不要在报告中写与实验无关的话,内容要有条理、完整、并能突出重点,要将遇到的主要问题说明。提交方式和时间:一周内完成。可以将文件包发到我邮箱******。注明主题:“交SQL作业”。提交文件格式要求:

a.将实验成果放入一个文件夹中,文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论