数据库实验4实验报告

  • 格式:docx
  • 大小:272.75 KB
  • 文档页数:14

下载文档原格式

  / 14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

淮海工学院计算机工程学院实验报告书

课程名:《数据库原理及应用》

题目: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.分数