数据库实验4实验报告
- 格式:docx
- 大小:272.75 KB
- 文档页数:14
淮海工学院计算机工程学院实验报告书
课程名:《数据库原理及应用》
题目:T-SQL高级应用
班级:软件132
学号:**********
*名:***
一.目的与要求
1.掌握复杂查询的使用方法;
2.掌握多表连接的方法;
3.掌握SELECT语句在多表查询中的应用。
4.掌握数据汇总、外连接查询的使用方法;
5.掌握事务定义的一般方法
二.实验内容
1.给出教材14-16的程序运行结果。
2.编写程序,查询“1033”班的最高分的学生的学号、姓名、班号、课程号和分数。
3.编写程序,创建一个新表,包含所有学生的姓名、课程名和分数,并以姓名排序。
4.编写程序,输出每个班最高分的课程名和分数。
5.在上次实验建立的factory数据库的基础上,完成如下各题:
●删除factory数据库上各个表之间建立的关系;
●显示各职工的工资记录和相应的工资小计。
●按性别和部门名的所有组合方式列出相应的平均工资。
●在worker表中使用以下语句插入一个职工记录:insert into worker values(20,’
陈立’,‘女’,’55/03/08’,1,’75/10/10’,4),在depart表中使用以下语句
插入一个部门记录:insert into depart values(5,’设备处’)。再对worker和
depart表进行全外连接显示职工的职工号,姓名和部门名。然后删除这两个插入的记
录。
●显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。
●显示最高工资的职工所在的部门名。
●显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。
●先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker
表中的职工人数,回滚该事务,最后显示worker表中的职工人数。
三.实验步骤
删除factory数据库上各个表之间建立的关系的操作步骤如下:
①启动SQL Server管理控制器。
②在“对象资源管理器”中展开LCB-PC服务器节点。
③展开“数据库”节点。
④选中,将其展开。
⑤展开“数据库关系图”节点。
⑥选中dbo.Diagram_1,右击,在出现的快捷菜单中选择“修改”命令,如图5.1所示。
⑦在数据库关系图中,选择表示要从关系图中删除的关系的连接线(对于两条连线均进行⑦~⑨的操作)。
⑧右击关系线,从快捷菜单中选择“从数据库中删除关系”命令。
⑨出现一个消息框,提示确认删除。单击“是”按钮。
⑩在出现的对话框中单击“是”按钮保存所做的修改。
这样就将worker表和depart表以及worker表和salary表之间的关系删除了。
四.测试数据与实验结果
第1-14题图
第1-15题图
第1-16题图
第2题图
第3题图
第4题图
图5.1
第5-2题图
第5-3题图
第5-4题图
第5-5题图
第5-6题图
第5-7题图
第5-8题图
第5-9题图
第5-10题图
五.结果分析与实验体会
在FROM子句中指定连接条件,有助于将这些连接条件与WHERE子句中的其他搜索条件分开,指定连接时建议使用这种方法。
如果某个表只出现在子查询中而不出现在外部查询中,那么该表中的列就无法包含在输出中(外部查询的选择列表)。
使用EXISTS引入的子查询在以下几方面与其他子查询略有不同:
EXISTS关键字前面没有列名,常量或其他表达式。
由EXISTS引入的子查询的选择列表通常都是由星号(*)组成。由于只是测试是否存在符合子查询中指定条件的行,所以不必列出列名。
六.源码
1
use school
select 学号,课程号,分数
from score
where 学号 in(103,105)
order by 学号
compute avg(分数) by 学号
go
2
use school
go
select student.班号,course.课程名,avg(score.分数)as'平均分'
from student,course,score
where student.学号=score.学号 and course.课程号=score.课程号
group by student.班号,course.课程名 with cube
go
3
use school
go
begin transaction Mytran
insert into teacher
values('999','张英','男','1960/03/05','教授','计算机系')
save transaction Mytran
insert into teacher
values('888','胡丽','男','1982/08/04','副教授','电子工程系')
rollback transaction Mytran
commit transaction
go
select * from teacher
go
delete teacher where 编号='999'
go
4
use school
select student.学号,student.姓名,student.班号,score.课程号,score.分数
from student,score
where 分数 in
(select max(分数)
from score
where 班号='1033' and student.学号=score.学号)
5
USE school
go
SELECT s.姓名,c.课程名,sc.分数