实验7实验报告.docx
《实验7实验报告.docx》由会员分享,可在线阅读,更多相关《实验7实验报告.docx(19页珍藏版)》请在冰豆网上搜索。
实验7实验报告
《数据库原理及应用》
实验报告
实验名称:
数据检索
(1)--单表查询
学院:
计算机学院
班级:
计算机应用技术大专班
学号:
201113131121
姓名:
黄锡杏
实验日期:
2013年4月19日
目录
一、实验准备4
1、设备:
4
2、知识复习:
4
二、实验目的4
三、实验内容5
(1).查询所有课程的课程号、课程名和学号5
(2).查询090501班的所有学生的基本信息5
(3).查询student表中所有年龄大于20岁的男生的姓名和年龄6
(4).查询计算机学院教师的专业名称6
(5).查询选修课程且期末成绩不为空的学生人数7
(6).查询Email使用126邮箱的所有学生的学号、姓名和电子邮箱地址7
(7).查询每名学生的学号、学修课程数目、总成绩,并查询结果存放到生成的“学生选课统计表”中8
(8).查询score表中选修‘c05109’或‘c05103’课程,并且课程期末成绩在90~100分之间的学生姓名和期末成绩9
(9).查询student表中所有学生的基本信息,查询结果按班级号classno升序排列,同一班级中的学生按入学成绩point降序排列10
(10).查询选修’c05109’课程,并且期末成绩在前5名的学生学号、课程号和期末成绩10
(11).查询各班学生的人数11
(12).查询各班期末成绩的最高分和最低分12
(13).查询教授两门及以上课程的教师编号、课程号和任课班级13
(14).查询课程编号以’c05’开头、被3名及以上学生选修且期末成绩的平均分高于75分的课程号、选修人数和期末成绩平均分,并按平均分降序排序14
(15).查询所有08级学生的期末成绩平均分,要求利用COMPUTEBY方法显示每一名学生的学生编号、课程号、期末成绩的明细表,以及期末成绩平均分的汇总表14
(16).查询所有女生入学成绩的最高份,要求利用COMPUTEBY方法既显示明细又显示汇总结果15
四、总结16
一、实验准备
1、设备:
安装好SQLServer2005的PC机一台;
2、知识复习:
回顾教材的表查询部分(主要在第五章)
(1)、利用SELECT…FROM子句实现投影查询和设置结果集格式;
(2)、利用WHERE语句实现数据过滤;
(3)、利用GROUPBY子句和HANING子句实现分组查询;
(4)、利用ORDERBY子句实现结果集排序;
(5)、COMPUTE语句和聚合函数的使用
二、实验目的
1、熟悉SQL的运行环境;
2、掌握SELECT各个子句的功能和数据的方法;
3、掌握WHERE子句中LIKE、IN、BETWEEN、IS等逻辑运算符的使用;
4、掌握COMPUTE语句和聚合函数的使用
三、实验内容
实验内容及步骤:
(1).查询所有课程的课程号、课程名和学号
代码:
useteaching
go
selectcourseno,cname,credit
fromcourse
结果:
(2).查询090501班的所有学生的基本信息
代码:
useteaching
go
select*
fromstudent
whereclassno='090501'
结果:
(3).查询student表中所有年龄大于20岁的男生的姓名和年龄
代码:
useteaching
go
selectsname,DATEDIFF(Year,birthday,GETDATE())Asage
fromstudent
whereDATEDIFF(Year,birthday,GETDATE())>20ANDsex='男'
结果:
(4).查询计算机学院教师的专业名称
代码:
useteaching
go
selectDISTINCTmajor
fromteacher
wheredepartment='计算机学院'
结果:
(5).查询选修课程且期末成绩不为空的学生人数
代码:
useteaching
go
selectcount(distinctstudentno)as'选修课程学生人数'
fromscore
wherefinalisnotnull
结果:
(6).查询Email使用126邮箱的所有学生的学号、姓名和电子邮箱地址
代码:
useteaching
go
selectstudentno,sname,email
fromstudent
whereemaillike'%%'
结果:
(7).查询每名学生的学号、学修课程数目、总成绩,并查询结果存放到生成的“学生选课统计表”中
①利用INTO子句生成表,讲select查询结果存放在其中
代码:
useteaching
go
selectstudentno,count(*)as'选课数目',sum(final)as'总成绩'
into学生选课统计表
fromscore
groupbystudentno
结果:
表中多了一个新表
②查询新表中的数据
代码:
select*
from学生选课统计表
结果:
(8).查询score表中选修‘c05109’或‘c05103’课程,并且课程期末成绩在90~100分之间的学生姓名和期末成绩
代码:
useteaching
go
selectsname,final
fromscore,student
wherefinalbetween90and100andcoursenoin('c05109','c05103')andscore.studentno=student.studentno
结果:
(9).查询student表中所有学生的基本信息,查询结果按班级号classno升序排列,同一班级中的学生按入学成绩point降序排列
代码:
useteaching
go
select*
fromstudent
orderbyclassnoasc,pointdesc
结果:
(10).查询选修’c05109’课程,并且期末成绩在前5名的学生学号、课程号和期末成绩
代码:
useteaching
go
selecttop5studentno,courseno,final
fromscore
wherecourseno='c05109'
orderbyfinaldesc
结果:
(11).查询各班学生的人数
代码:
useteaching
go
selectclassno,count(*)ascount
fromstudent
groupbyclassno
orderbyclassno
结果:
(12).查询各班期末成绩的最高分和最低分
代码:
useteaching
go
selectcourseno,max(final)asmax,min(final)asmin
fromscore
wherefinalisnotnull
groupbycourseno
结果:
(13).查询教授两门及以上课程的教师编号、课程号和任课班级
代码:
useteaching
selectteacherno,classno,courseno
fromteach_class
whereteacherno
in(selectteacherno
fromteach_class
groupbyteacherno
havingcount(courseno)>=2
)
结果:
(14).查询课程编号以’c05’开头、被3名及以上学生选修且期末成绩的平均分高于75分的课程号、选修人数和期末成绩平均分,并按平均分降序排序
代码:
useteaching
go
selectcourseno,count(studentno)ascount,avg(final)asaverage
fromscore
wherecoursenolike'c05%'andfinalisnotnull
groupbycourseno
havingcount(studentno)>=3andavg(final)>=75
orderbyavg(final)desc
结果:
(15).查询所有08级学生的期末成绩平均分,要求利用COMPUTEBY方法显示每一名学生的学生编号、课程号、期末成绩的明细表,以及期末成绩平均分的汇总表
代码:
useteaching
go
selectstudentno,courseno,final
fromscore
wherestudentnolike'08%'
orderbystudentno
computeavg(final)bystudentno
结果:
(16).查询所有女生入学成绩的最高份,要求利用COMPUTEBY方法既显示明细又显示汇总结果
代码:
useteaching
go
selectstudentno,sname,sex,birthday,classno,point,phone,email
fromstudent
wheresex='女'
computemax(point)
结果:
四、总结
本次实验是我学会用SQL语句建表以来学会查询的第一个实验,在刚开始的时候真的有很多困难,因为表的查询不是仅仅纠结在SELECT、FROM、WHERE三个单词上,而是要弄清楚表与表之间的关系!
上机的学习中让我了解到数据库查询所遇到的种种问题。
例如上面的第(13)题:
查询教授两门及以上课程的教师编号、课程号和任课班级:
代码:
useteaching
go
selectteacherno,count(courseno)ascount
fromteach_class
groupbyteacherno
havingcount(courseno)>=2
结果:
useteaching
selectteacherno,classno,courseno
fromteach_class
whereteacherno
in(selectteacherno
fromteach_class
groupbyteacherno
havingcount(courseno)>=2
)
上面可知那是两种不同的情况,而其实第一种的不对题目的,这就需要我们在上机过程中多次对照而得到的结果!
从而我们知道:
查询可以通过SQL语言进行完成,这样加深了查询语句的基本结构,让我们能更好的掌握其中语句,方便于我们后面的学习和应用。
当然在学习过程中也遇到了不少问题,积极询问老师,和同学共同商讨,查询资料把问题得以解决,培养了解决问题的能力,查阅资料是很好的手段,在今后的学习过程中应该继续发扬这些能力。
数据库的学习是在学习与探索中度过的,短暂的课程时间的学习是结束了,但其中学到了许多知识,也有诸多的问题需要今后去解决,学习一门课程,学到的是如何学会,而不是随随便便的学完,在今后还要自己强化各方面的知识,真正学以致用。
通过这次的学习,我了解了数据库的概念与重要性,还有今后的发展方向,明白数据库的应用是广泛的,不可小觑,在今后应该再进行加强学习。