北邮大三数据库实验六数据查询分析实验
数据库查询实验报告

数据库查询实验报告数据库查询实验报告一、引言数据库查询是数据库管理系统中的重要功能之一,通过查询可以从数据库中获取所需的信息。
本实验旨在通过实际操作,掌握数据库查询的基本方法和技巧,并对查询结果进行分析和解读。
二、实验环境本次实验使用的是MySQL数据库管理系统,该系统具有广泛的应用和较好的稳定性。
实验所需的数据表包括学生表(student)、课程表(course)和成绩表(score)。
三、实验步骤1. 创建数据库和数据表首先,在MySQL中创建一个名为"学生成绩管理系统"的数据库,并创建三个数据表:student、course和score。
其中,student表包含学生的学号、姓名、性别等信息;course表包含课程的编号、名称、学分等信息;score表包含学生的学号、课程编号和成绩等信息。
2. 插入测试数据为了进行查询实验,需要向数据表中插入一些测试数据。
通过INSERT语句,向student表中插入若干学生信息;向course表中插入若干课程信息;向score表中插入若干学生成绩信息。
3. 执行查询语句根据实验要求,设计不同的查询语句,包括简单查询、条件查询、多表连接查询等。
通过执行这些查询语句,可以从数据库中获取所需的信息。
4. 分析查询结果根据查询结果,对数据进行分析和解读。
可以通过统计、排序、分组等方式,对数据进行进一步处理和展示。
例如,可以统计每个学生的平均成绩,对学生成绩进行排名等。
四、实验结果与分析通过实验,我们得到了一些有关学生成绩的查询结果。
根据这些结果,我们可以得出以下结论:1. 学生A的平均成绩为80分,居于全班第一名;2. 课程B的平均成绩最高,为85分;3. 学生C在课程A和课程B中都取得了优异的成绩。
五、实验总结本次实验通过数据库查询的实际操作,使我们对数据库查询的基本方法和技巧有了更深入的了解。
同时,通过对查询结果的分析和解读,我们也对数据有了更全面的认识。
数据库查询的实验报告

数据库查询的实验报告数据库查询的实验报告引言:数据库查询是一项重要的技术,它可以帮助我们从庞大的数据集中提取所需的信息。
本实验旨在探索数据库查询的原理和实践,通过实际操作和分析,深入了解数据库查询的过程和技巧。
实验目的:1. 理解数据库查询的基本概念和原理;2. 掌握使用SQL语句进行数据库查询的方法;3. 分析不同查询语句的执行效率和优化策略。
实验步骤:1. 数据库准备:选择一个合适的数据库系统,并创建一个包含适当表结构和数据的数据库。
2. 查询语句编写:根据实际需求,编写不同类型的查询语句,包括基本查询、条件查询、排序查询、聚合查询等。
3. 查询语句执行:使用数据库管理系统提供的查询工具,执行编写好的查询语句,并观察查询结果。
4. 查询结果分析:根据查询结果,分析查询语句的执行效率和查询结果的准确性。
5. 优化策略实施:对于执行效率较低的查询语句,尝试优化策略,如索引的使用、查询语句的重写等。
6. 优化效果评估:比较优化前后查询语句的执行效率,并分析优化策略的有效性。
实验结果与讨论:通过实验,我们发现数据库查询的过程中,查询语句的编写和优化对查询效率有重要影响。
以下是我们的实验结果和讨论。
1. 基本查询:基本查询是最简单的查询方式,通过SELECT语句从数据库中选择所需的字段。
我们发现,基本查询的执行效率较高,查询结果准确。
然而,在处理大量数据时,查询时间可能会增加。
为了提高效率,我们可以使用LIMIT子句限制返回的记录数。
2. 条件查询:条件查询是根据特定条件筛选数据的查询方式。
我们使用WHERE子句来指定查询条件,并发现查询结果的准确性和效率与查询条件的选择有关。
使用索引字段作为查询条件可以大大提高查询效率。
3. 排序查询:排序查询是根据指定字段的顺序对查询结果进行排序的方式。
我们使用ORDER BY子句来指定排序字段,并观察到排序查询的执行效率较高。
然而,对于大规模数据集,排序操作可能会导致性能下降。
实验六:数据库综合查询

实验六:数据库综合查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件种类和表示方法;3.掌握连接查询的表示及使用;4.掌握嵌套查询的表示及使用;5.了解集合查询的表示及使用。
二、实验环境已安装SQL Server 2005 企业版的计算机(13台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.了解连接查询的表示及使用;3.了解嵌套查询的表示及使用;4.了解集合查询的表示及使用;5.完成实验报告;五、实验内容及步骤以数据库原理实验5数据为基础,请使用T-SQL 语句实现进行以下操作:1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;select*from course10where Cname like'DB\_%s_'escape'\'2.查询名字中第2个字为‘茹’的学生姓名和学号及选修的课程号、课程名;select Sname,Sno,Cno,Cnamefrom student10,course10where Sname like'_茹%'3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;select student10.Sno,Sname,Sdept,Cno,Grade from student10,sc10where student10.Sno=sc10.Sno and Cno in(select Cno from course10where Cname='数学'or Cname='大学英语')4.查询缺少成绩的所有学生的详细情况;SELECT[Sno],[Sname],[Ssex],[Sage],[Sdept]FROM student10where not exists(select*from sc10where Sno=student10.Sno2.and Grade is not null)查询与‘张茹英’(假设姓名唯一)年龄不同的所有学生的信息;SELECT b.*FROM student10a,Student10b where a.Sname='李凯丽'and a.Sage<>b.Sage3.查询所选课程的平均成绩大于张茹英的平均成绩的学生学号、姓名及平均成绩;SELECT student10.Sno,Sname,平均成绩=avg(Grade)FROM student10,sc10where sc10.Sno=student10.Snogroup by student10.Sno,Sname having avg(Grade)>(select avg(Grade)from sc10where Sno=(select Sno from student10where Sname='李凯丽')) 4.按照‚学号,姓名,所在院系,已修学分‛的顺序列出学生学分的获得情况。
北邮大三下数据库实验报告3

北京邮电大学实验报告课程名称数据库系统原理实验内容实验(三)实验名称数据查询实验班级2013211***姓名***指导老师卢向群成绩_________2016年4月20日实验三数据查询实验实验目的通过对实验二中建立的数据库关系表和视图的各种查询的操作,加深对SQL语言和Transact SQL查询语言的了解,掌握相关查询语句的语法和使用方法。
实验内容数据库关系表查询:(1)简单的查询操作,包括单表的查询、选择条件、结果排序等的练习;(2)多表的连接查询,包括等值连接、自然连接等;(3)复杂的查询操作,包括使用分组函数等库函数的查询操作;(4)练习带有IN、比较符的嵌套查询。
具体内容包括:1.简单查询:(1)查询班号为g99401班的学生的学号和姓名;表中没有该班级的学生,故查询结果为空。
(2) 查询“数据库开发技术”课程的学分;(3) 查询选修了课程编号为“dep04_s003”的学生的学号和成绩,并将成绩按降序输出;(4) 查询学号为“g9940205”的学生选修的课程编号和成绩;(5) 查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。
2.在多表连接的查询实验中,在SQL SERVER提供的交互式语言环境下用TransactSQL语句完成以下查询操作:(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;该题与上一题的差别在于学生姓名,这一属性与成绩不在同一张表中,故需要对两张表做自然连接。
(2)查询所有学生的学号、姓名、选修的课程名称和成绩;需要用到三张表,把三张表做自然连接,语句如下:查询结果如下:(3)查询计算机科学系林红同学选修的课程名称、学分和成绩。
(考试成绩>=60有学分,否则无学分。
)这个查询看似困难,实际上只是因为设计的表格较多,所以麻烦而已,只要将五张表自然连接就可以了。
查询结果为空,说明计算机科学系没有叫“林红”的学生。
北邮大三下数据库实验报告2

北京邮电大学实验报告课程名称数据库系统原理实验内容实验(2)数据库表/视图的创建与维护班级2013211** 姓名 ***指导老师卢向群成绩_________2016年4月10日实验二数据库表/视图的创建与维护实验实验目的1.通过进行数据库表的建立操作,熟悉并掌握SQL SERVER数据库表的建立方法,理解关系数据库表的结构,巩固SQL标准中关于数据库表的建立语句;2.通过进行数据库表数据的增加、删除和插入等维护操作,熟悉并掌握SQL SERVER数据库数据的操作方法,巩固SQL中关于数据维护的语句;3.通过对SQL SERVER中建立、维护视图的实验,熟悉SQL SERVER中对视图的操作方法和途径,理解和掌握视图的概念。
实验内容建立相应的表及视图,并熟悉基本操作,例如数据增删改、表结构修改等。
实验环境C/S结构,SQL Server企业版服务器及客户端;数据库存储在服务器上,表和视图定义也存储在服务器上,同学可通过网络使用客户端连接到服务器上进行操作。
实验要求详尽记录每一步骤。
截图并注解。
实验步骤1.熟悉课程实验背景知识;2.根据物理模式使用SQL Server创建相应的表可采用两种方法创建表:A.使用对象资源管理器。
B.SQL语句。
A.使用对象资源管理器的方法:①光标移到“表”上,右键选择新建表。
②输入表的属性、数据类型等信息,还可以设置主键、外键。
但是本次实验不需要先新建表,可以直接导入表。
导入表的步骤见下。
B.用SQL语句创建表。
①在对象资源管理器中单击右键,选择“新建查询”,在空白框中写入创建表的SQL语句。
如图所示:执行命令后,刷新可在资源管理器中看见新建好的book 表。
3.将教师提供的数据导入表;①如图选择“导入数据”。
②选择数据源和路径。
③勾选相应的表格④点击下一步,直到完成数据导入。
刷新可见到导入成功的表。
4.对表做增加记录的操作。
①右键,选择新建查询②在中间空白框内输入SQL语句,用于执行增加记录的操作初始的class 表插入一条记录后的class 表成功插入第13条记录。
北邮 大三下 数据库实验六 mysql版本

实验报告学院:计算机学院课程名称:数据库系统实验名称:实验六数据查询分析实验班级:2009211311姓名:schnee学号:实验六数据查询分析实验1.实验目的通过对不同情况下查询语句的执行分析,巩固和加深对查询和查询优化相关理论知识的理解,提高优化数据库系统的实践能力,熟悉了解MySQL Server 5.5中查询分析器的使用,并进一步提高编写复杂查询的SQL 程序的能力。
2.实验环境操作系统:Microsoft Windows 7旗舰版(32位)。
软件:数据库版本:MySQL 5.53.实验内容及过程3.1.索引对查询的影响3.1的四个小题,由于MySQL没有聚集索引与非聚集索引之分,所以无法验证,直接给出讨论结果。
3.1.1.对结果集只有一个元组的查询分三种情况进行执行(比如查询一个具体学生的信息),用查询分析器的执行步骤和结果对执行进行分析比较。
3.1.1.1.不建立索引,在student表中查询学号为“31427”的学生登录mysql后输入set profiling=1;然后执行语句,则show profiles就显示出来之前输入的命令的执行时间。
如果查询细节的话则show profile for query 2; 2即语句的顺序。
详见截图,则执行时间约为60毫秒:详细的select * from student where sno=’31427’;的执行细节则为:3.1.1.2.在学号上建立非聚集索引3.1.1.3.在学号上建立聚集索引先解释下索引。
索引用来快速地寻找那些具有特定值的记录,所有MySQL 索引都以B-树的形式保存。
如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。
表里面的记录数量越多,这个操作的代价就越高。
如果作为搜索条件的列上已经创建了索引,MySQL 无需扫描任何记录即可迅速得到目标记录所在的位置。
聚集索引又叫主索引,其索引的排序方式和正文的排序方式一致。
实验六 数据库的查询数据库的查询 实验报告

实验6 数据库的查询(三)一.实验名称:数据库的查询(三)二.目的和要求:(1)掌握数据汇总的方法。
(2)掌握SELECT语句的GROUP BY子句的作用和使用方法。
(3)掌握SELECT语句的ORDER BY子句的作用和使用方法。
三.实验准备(1)了解数据汇总的方法。
(2)了解SELECT语句的GROUP BY子句的作用和使用方法。
(3)了解SELECT语句的ORDER BY子句的作用和使用方法。
四.实验时间:2011年4月28日五.实验设备和实验环境:(1) PC机。
(2) SQL Server 2000。
六.实验内容:1.数据汇总(1)求数学系学生的平均年龄。
在查询分析器的编辑窗口输人如下语句并执行。
SELECT A VG(Sage) AS ‘数学系平均年龄’FROM StudentWHERE Sdept=’CS’思考与练习:查询数学系学生的最高年龄和最低年龄。
select max(sage) as '最高年龄',min(sage) as '最低年龄'from studentwhere sdept='math'(2)求选修数据库系统学生的平均成绩。
在查询分析器的编辑窗口输入如下的语句并执行:SELECT A VG(Grade) AS ‘数据库系统平均成绩’FROM ScWHERE Cno=(SELECT CnoFROM CourseWHERE Cname=’数据库系统’)思考与练习:求选修数据库系统学生的最高成绩和最低成绩。
select max(grade) as '最高成绩',min(grade) as '最低成绩'from scwhere cno=(select cnofrom coursewhere cname='数据库')(3)求数学系学生的总人数。
在查询分析器的编辑窗口输入如下的语句并执行:SELECT COUNT(Sno)FROM StudentW HERE Sdept=‘数学系’思考与练习:统计选修数据库系统课程成绩大于等于90分的人数。
实验六:数据库综合查询-答案

实验六:数据库综合查询1.查询以‘DB_’开头,且倒数第个字符为‘s’的课程的详细情况; use studentselect*from coursewhere cname like'DB_%S__'2.查询名字中第个字为‘阳’的学生姓名和学号及选修的课程号、课程名;use studentselect sname,student.sno,o,cnamefrom course,student,scwhere sname like'_阳%'and student.sno=sc.sno and o=o3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;use studentselect student.sno学号,sname姓名,sdept所在院系,o 选修课程号,grade成绩from course,student,scwhere (cname='数学'or cname='大学英语')and student.sno=sc.sno and o=o4.查询缺少成绩的所有学生的详细情况;use studentselect student.*from student,scwhere grade is null and student.sno=sc.sno注意:若成绩存在,则改为grade=数字5.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息use studentselect*from studentwhere sage!=(select sagefrom studentwhere sname='张力')6.查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;use studentselect x.sno学号,sname姓名,平均成绩=AVG(grade)from student x,sc ygroup by sname,x.snohaving avg(grade)>(select AVG(grade)from sc,studentwhere sname='张力' andsc.sno=student.sno )注意:没有成功7.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六数据查询分析实验
实验目的
通过对不同情况下查询语句的执行分析,巩固和加深对查询和查询优化相关理论知识的理解,提高优化数据库系统的实践能力,熟悉了解Sybase中查询分析器的使用,并进一步提高编写复杂查询的SQL 程序的能力。
实验内容
1.索引对查询的影响
(1)对结果集只有一个元组的查询分三种情况进行执行(必如查询一个具体学生的信息):不建立索引,(学号上)建立非聚集索引,(学号上)建立聚集索引。
建立聚集索引:
create clustered index student
on student(student_id)
go
建立非聚集索引:
create nonclustered index student_index
on student(student_id)
go
用查询分析器的执行步骤和结果对执行进行分析比较。
select*from student
where student_id='30201'
不建立索引
建立聚集索引
建立非聚集索引
(2)对结果集中有多个元组的查询(例如查看某门成绩的成绩表)分类似(1)的三种情况进行执行比较。
select*from student
where student_id>'30401'
不建立索引:
建立聚集索引:
建立非聚集索引:
(3)对查询条件为一个连续的范围的查询(例如查看学号在某个范围内的学生的选课情况)分类似(1)的三种情况进行执行比较,注意系统处理的选择。
select*from student
where student_id between'31201'and'31415'
不建立索引:
建立聚集索引:
建立非聚集索引:
(4)索引代价。
在有索引和无索引的情况下插入数据(例如在选课情况表SC 上插入数据),比较插入的执行效率。
insert into student values
('31710','张攀','男','1993-1-1 00:00:00','计算机','3146')
delete from student where student_id ='31710'
无索引:
建立聚集索引:
建立非聚集索引:
2、对相同查询功能不同查询语句的执行比较分析(1)group by
select avg(score)
from sc
group by course_id
having course_id='C01'
select avg(score)
from sc
where course_id='C01'
比较其查询效率可知,没有group by的查询时间比较短,查询效率较高(2)
select student_id,student_name,birthday
from student s1
where birthday=
(select max(birthday)
from student s2
where s1.department = s2.department)
另一个:
select department,max(birthday)as maxAge into tmp
from student
group by department;
select student_id,student_name,birthday
from student,tmp
where student.birthday = tmp.maxAge and tmp.department=student.department drop table tmp
查询结果来看,重写的执行时间要快一些,但相差不多,如果数据库比较大的话,执行效果也许更明显
(3)对下面两个查询进行比较
select student_name,birthday
from student
where department!='电信'and birthday>all
(select birthday
from student
where department ='电信')
另:
select student_name,birthday
from student
where department!='电信'and birthday>
(select max(birthday)
from student
where department ='电信')
3、查询优化
除了建立适当索引,对SQL 语句重写外,还有其他手段来进行查询调优,例如调整缓冲区大小,事先建立视图等。
设计实现下列查询,使之运行效率最高。
写出你的查询形式,以及调优过程;并说明最优情况下的运行时间。
(1)查找选修了每一门课的学生。
方法一:
with student1(num,account)as
(
select distinct student_id,count(course_id)
from sc
group by student_id
)
select student_name
from student1,student
where student1.account>=5 and student1.num=student.student_id
方法二:
select student_name
from student
where not exists
(
select*
from course
where not exists
(
select*
from sc
where sc.student_id=student.student_id and course.course_id=sc.course_id )
)
尝试了两种方法,相比较而言,第二种方法的执行速度更快。
(2)查找至少选修了课程数据库原理和操作系统的学生的学号。
方法一:
(select student_id
from studentview
where course_name='操作系统')
intersect
(select student_id
from studentview
where course_name='数据库原理')
方法二:
(select student_id
from sc,course
where course.course_name='操作系统'and sc.course_id= course.course_id)
intersect
(select student_id
from sc, course
where course.course_name='数据库原理'and sc. course_id = course. course_id)
相比较而言不使用视图的方法查询速度较快
实验总结:
1、本次实验遇到的第一个问题就是如何建立索引的问题,在之前实验的基础上
开始做,发现设置了主键之后,数据库会默认以主键为搜索码建立聚集索引,而且无法删除索引也不好更改,所以只好重新建表格进行实验,自己来设置聚集索引或非聚集索引
2、实验遇到的第二个问题是在进行第二步实验的时候,原表格中没有age这一
属性,只有birthday这一属性,所以把age全部改为birthday进行实验。
3、实验的第三部分有点难度,想到了一种方法之后就很难再用另一种方法把它
表示出来,参考了网上的一些资料,集思广益完成了查询优化的设计。