数据库查询实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用数学学院_学院专业_1__班学号
姓名___ ___教师评定
实验题目数据库的查询
一、实验目的与要求
实验目的:使学生掌握SQL Server查询分析器的使用方法,加深对SQL 和Transact-SQL语言的查询语句的理解。熟练掌握简单表的数据查询、数据排序和数据联结查询的操作方法;嵌套查询语句;熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
实验要求:
1、简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等;
2、连接查询操作;
3、嵌套查询。在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS 操作符进行嵌套查询操作;
4、分组查询实验。包括分组条件表达、选择组条件的表达方法;
5、使用函数查询。包括统计函数和分组统计函数的使用方法;
6、组合查询实验;
二、实验方案
将查询需求用Transact-SQL语言表示;在SQL Server查询分析器的输入区中输入Transact-SQL查询语句;设置查询分析器的结果区为标准执行或网格执行方式;发布执行命令,并在结果区中查看结果;
三、实验结果和数据处理
1、学生选课库的各个表截图:
(1)学生表
(2)课程表
(3)选课表
2、图书-读者库的各个表截图(1)图书表
(2)读者表
(3)借阅表
实验步骤:
1、简单查询:
l)用Transact-SQL语句表示下列操作.在学生选课库中实现其数据查询操作.①求数学系学生的学号和姓名。
select 学号,姓名
from 学生
where 所在系='数学';
结果:
②求选修了课程的学生学号。
select distinct 学号
from 选课
结果:
③求选修A1课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
select 学号,成绩
from 选课
where 课程号='A1'
order by 成绩 desc,学号 asc
结果:
④获选修课程A1且成绩在80~90分之间的学生学号和成绩,并将成绩乘以系数0.8 输出。select 学号,成绩*0.8
from 选课
where 课程号='A1' and 成绩 between 80 and 90
结果:
⑤求数学系或计算机系姓张的学生的信息。
select *
from 学生
where 所在系 in ('数学','计算机') and 姓名 like '张%';
结果;
⑥求缺少了成绩的学生的学号和课程号。(本库中没有学生没有成绩)
select 学号,课程号
from 选课
where 成绩 is null
结果:
2)在图书借阅库中实现其查询操作:将计算机类的书存入永久的计算机图书表中,将借书日期在2012年以前的借阅记录存入临时的超期借阅表。
select *
into 计算机图书
from 图书
where 类别='计算机'
go
select *
into #超期借阅
from 借阅
where 借阅日期<'12:01:01'
go
结果:
2、连接查询实验
用Transact-SQL语句表示,并在学生选课库中实现下列数据连接查询操作:
①查询每个学生的情况以及他(她)所选修的课程
select 学生.*,选课.*
from 学生,选课
where 学生.学号=选课.学号
结果:
②求学生的学号、姓名、选修的课程名及成绩。
select 学生.学号,姓名,课程名,成绩
from 学生,课程,选课
where 学生.学号=选课.学号 and 课程.课程号=选课.课程号
结果:
③求选修A1课程且成绩为85分以上的学生学号、姓名及成绩。select 学生.学号,姓名,成绩
from 学生,选课
where 学生.学号=选课.学号 and 课程号='A1' and 成绩>85
结果:
④查询每一门课的间接先行课(即先行课的先行课)。
select A.课程号,A.课程名,B.先行课
from 课程 A,课程 B
where A.先行课=B.课程号
结果:
3、嵌套查询:
用Transact-SQL语句表示,在学生选课库中实现其数据嵌套查询操作。
(1)求选修了数据结构的学生学号和姓名。
select 学号,姓名
from 学生
where 学号 in (select 学号
from 选课
where 课程号 in(select 课程号
from 课程
where 课程名='数据结构'));
结果:
(2)求A1课程的成绩高于黄洁蓉的学生学号和成绩。
select 学号,成绩
from 选课
where 课程号 ='A1' and 成绩 > ( select 成绩
from 选课
where 课程号='A1' and 学号=
(select 学号
from 学生
where 姓名='黄洁蓉'));
结果:
(3)求其他系中年龄小于数学系年龄最大者的学生。
select *
from 学生
where 年龄 < any (select 年龄
from 学生
where 所在系='数学') and 所在系 < >'数学'
结果:
(4)求其他系中比数学系学生年龄都小的学生。
select *