1、实验7实验报告数据库原理及应用实验报告实验名称: 数据检索(1)-单表查询 学 院: 计算机学院 班 级: 计算机应用技术大专班 学 号: 201113131121 姓 名: 黄锡杏 实验日期: 2013年4月19日 目录一、实验准备 41、设备: 42、知识复习: 4二、实验目的 4三、实验内容 5(1).查询所有课程的课程号、课程名和学号 5(2).查询090501班的所有学生的基本信息 5(3).查询student表中所有年龄大于20岁的男生的姓名和年龄 6(4).查询计算机学院教师的专业名称 6(5).查询选修课程且期末成绩不为空的学生人数 7(6).查询Email使用126邮箱的所有
2、学生的学号、姓名和电子邮箱地址 7(7).查询每名学生的学号、学修课程数目、总成绩,并查询结果存放到生成的“学生选课统计表”中 8(8).查询score表中选修c05109或c05103课程,并且课程期末成绩在90100分之间的学生姓名和期末成绩 9(9).查询student表中所有学生的基本信息,查询结果按班级号classno升序排列,同一班级中的学生按入学成绩point降序排列 10(10).查询选修c05109课程,并且期末成绩在前5名的学生学号、课程号和期末成绩 10(11).查询各班学生的人数 11(12).查询各班期末成绩的最高分和最低分 12(13).查询教授两门及以上课程的教师
3、编号、课程号和任课班级 13(14).查询课程编号以c05开头、被3名及以上学生选修且期末成绩的平均分高于75分的课程号、选修人数和期末成绩平均分,并按平均分降序排序 14(15).查询所有08级学生的期末成绩平均分,要求利用COMPUTE BY方法显示每一名学生的学生编号、课程号、期末成绩的明细表,以及期末成绩平均分的汇总表 14(16).查询所有女生入学成绩的最高份,要求利用COMPUTE BY方法既显示明细又显示汇总结果 15四、总结 16一、实验准备1、设备:安装好SQL Server 2005的PC机一台;2、知识复习:回顾教材的表查询部分(主要在第五章)(1)、 利用SELECTF
4、ROM子句实现投影查询和设置结果集格式;(2)、利用WHERE语句实现数据过滤;(3)、利用GROUP BY子句和HANING子句实现分组查询;(4)、利用ORDER BY子句实现结果集排序;(5)、COMPUTE语句和聚合函数的使用二、实验目的1、熟悉SQL的运行环境;2、掌握SELECT各个子句的功能和数据的方法;3、掌握WHERE子句中LIKE、IN、BETWEEN 、IS等逻辑运算符的使用;4、掌握COMPUTE语句和聚合函数的使用三、实验内容实验内容及步骤:(1).查询所有课程的课程号、课程名和学号代码:use teachinggoselect courseno,cname,cred
5、itfrom course结果:(2).查询090501班的所有学生的基本信息代码:use teachinggoselect *from studentwhere classno=090501结果:(3).查询student表中所有年龄大于20岁的男生的姓名和年龄代码:use teachinggoselect sname,DATEDIFF(Year,birthday,GETDATE() As agefrom student where DATEDIFF(Year,birthday,GETDATE()20 AND sex=男结果:(4).查询计算机学院教师的专业名称代码:use teaching
6、goselect DISTINCT majorfrom teacherwhere department=计算机学院结果:(5).查询选修课程且期末成绩不为空的学生人数代码:use teachinggoselect count(distinct studentno) as 选修课程学生人数from scorewhere final is not null结果:(6).查询Email使用126邮箱的所有学生的学号、姓名和电子邮箱地址代码:use teachinggoselect studentno,sname,emailfrom studentwhere email like %结果:(7).查询
7、每名学生的学号、学修课程数目、总成绩,并查询结果存放到生成的“学生选课统计表”中利用INTO子句生成表,讲select查询结果存放在其中代码:use teachinggoselect studentno,count(*) as 选课数目,sum(final) as 总成绩into 学生选课统计表from scoregroup by studentno结果:表中多了一个新表查询新表中的数据代码:select *from 学生选课统计表结果:(8).查询score表中选修c05109或c05103课程,并且课程期末成绩在90100分之间的学生姓名和期末成绩代码:use teachinggosele
8、ct sname,finalfrom score,studentwhere final between 90 and 100 and courseno in(c05109,c05103) and score.studentno=student.studentno结果:(9).查询student表中所有学生的基本信息,查询结果按班级号classno升序排列,同一班级中的学生按入学成绩point降序排列代码:use teaching goselect *from studentorder by classno asc,point desc结果:(10).查询选修c05109课程,并且期末成绩在前5
9、名的学生学号、课程号和期末成绩代码:use teachinggoselect top 5 studentno,courseno,finalfrom scorewhere courseno=c05109order by final desc结果:(11).查询各班学生的人数代码:use teachinggoselect classno,count(*) as countfrom studentgroup by classnoorder by classno结果:(12).查询各班期末成绩的最高分和最低分代码:use teachinggoselect courseno,max(final) as
10、max,min(final) as minfrom scorewhere final is not nullgroup by courseno结果:(13).查询教授两门及以上课程的教师编号、课程号和任课班级代码:use teachingselect teacherno,classno,coursenofrom teach_classwhere teacherno in(select teacherno from teach_class group by teacherno having count(courseno)=2 )结果:(14).查询课程编号以c05开头、被3名及以上学生选修且期末
11、成绩的平均分高于75分的课程号、选修人数和期末成绩平均分,并按平均分降序排序代码:use teachinggoselect courseno,count(studentno) as count,avg(final) as averagefrom scorewhere courseno like c05% and final is not nullgroup by coursenohaving count(studentno)=3 and avg(final)=75order by avg(final) desc结果:(15).查询所有08级学生的期末成绩平均分,要求利用COMPUTE BY方法
12、显示每一名学生的学生编号、课程号、期末成绩的明细表,以及期末成绩平均分的汇总表代码:use teachinggoselect studentno,courseno,finalfrom scorewhere studentno like 08%order by studentnocompute avg(final) by studentno结果:(16).查询所有女生入学成绩的最高份,要求利用COMPUTE BY方法既显示明细又显示汇总结果代码:use teachinggoselect studentno,sname,sex,birthday,classno,point,phone,emailf
13、rom studentwhere sex=女compute max(point)结果:四、总结本次实验是我学会用SQL语句建表以来学会查询的第一个实验,在刚开始的时候真的有很多困难,因为表的查询不是仅仅纠结在SELECT、FROM、WHERE三个单词上,而是要弄清楚表与表之间的关系!上机的学习中让我了解到数据库查询所遇到的种种问题。例如上面的第(13)题:查询教授两门及以上课程的教师编号、课程号和任课班级:代码:use teachinggoselect teacherno,count(courseno) as countfrom teach_classgroup by teachernohav
14、ing count(courseno)=2结果:use teachingselect teacherno,classno,coursenofrom teach_classwhere teacherno in(select teacherno from teach_class group by teacherno having count(courseno)=2 )上面可知那是两种不同的情况,而其实第一种的不对题目的,这就需要我们在上机过程中多次对照而得到的结果!从而我们知道:查询可以通过SQL语言进行完成,这样加深了查询语句的基本结构,让我们能更好的掌握其中语句,方便于我们后面的学习和应用。当然在学习过程中也遇到了不少问题,积极询问老师,和同学共同商讨,查询资料把问题得以解决,培养了解决问题的能力,查阅资料是很好的手段,在今后的学习过程中应该继续发扬这些能力。数据库的学习是在学习与探索中度过的,短暂的课程时间的学习是结束了,但其中学到了许多知识,也有诸多的问题需要今后去解决,学习一门课程,学到的是如何学会,而不是随随便便的学完,在今后还要自己强化各方面的知识,真正学以致用。通过这次的学习,我了解了数据库的概念与重要性,还有今后的发展方向,明白数据库的应用是广泛的,不可小觑,在今后应该再进行加强学习。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1