数据库原理及应用 实验五T-SQL高级应用

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

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

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

题目:T-SQL高级应用

班级:

学号:

姓名:

一.目的与要求

1.通过本实验掌握使用SELECT语句进行分组与多表链接查询的功能。

二.实验内容

上机实验题5

1、删除factory数据库上各个表之间建立的关系。

2、显示各职工的工资记录和相应的工资小计。

3、按性别和部门名的所有组合方式列出相应的平均工资。

4、在worker表中使用以下语句插入一个职工记录:

INSERT INTO worker V ALUES(20,’陈立’,’女’,’55/03/08’,1,’75/1/10’,4)

在depart表中使用以下语句插入一个部门记录:

INSERT INTO depart V ALUES(5,’设备处‘)

再对worker和depart表进行全外连接显示职工的职工号、姓名和部门名。然后删

除这两个插入的记录。

5、显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。

6、显示最高工资的职工所在的部门名。

7、显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。

8、采用游标方式实现(6)的功能。

9、采用游标方式实现(7)的功能。

10、先显示worker表中的职工人数,开始一个事物,插入一个职工记录,再显示worker

表中的职工人数,回滚该事物,最后显示worker表中的职工人数。

三.实验步骤

1、打开数据库关系图,右击各个表之间的关系,点击“从数据库中删除关系”,删除factory

数据库上各个表之间建立的关系。

2、

USE factory

SELECT职工号,姓名,工资

FROM salary

ORDER BY职工号

COMPUTE SUM(工资)BY职工号

3、

SELECT worker.性别,depart.部门名,AVG(salary.工资)AS'平均工资'

FROM worker,depart,salary

WHERE worker.职工号=salary.职工号AND worker.部门号=depart.部门号

GROUP BY worker.性别,depart.部门名

4、

1)USE factory

INSERT INTO worker VALUES(20,'陈立','女','03/08/1955','是','10/10/1975',101)

2)USE factory

INSERT INTO depart VALUES(5,'设备处')

3)USE factory

INSERT INTO worker VALUES('20','陈丽','女','03/08/1955','是

','10/10/1975',101)

INSERT INTO depart VALUES('5','设备处')

SELECT worker.职工号,worker.姓名,depart.部门名

FROM worker FULL JOIN depart

ON(worker.部门号=depart.部门号)

ORDER BY worker.职工号

DELETE FROM worker WHERE职工号='20'

DELETE FROM depart WHERE部门号='5'

5、

USE factory

SELECT worker.职工号,worker.姓名,depart.部门名,(salary.日期)AS'工资发放日期',(salary.工资)AS'最高工资'

FROM worker,depart,salary

WHERE worker.职工号=salary.职工号AND worker.部门号=depart.部门号AND salary.工资=(select max(工资)FROM salary)

6、

USE factory

SELECT depart.部门名

FROM worker,depart,salary

WHERE worker.职工号=salary.职工号AND worker.部门号=depart.部门号AND salary.工资=(SELECT MAX(salary.工资)FROM salary)

7、

USE factory

SELECT worker.职工号,worker.姓名

FROM worker,salary,depart

WHERE worker.职工号=salary.职工号AND depart.部门号=worker.部门号

GROUP BY worker.职工号,worker.姓名

HAVING AVG(salary.工资)<(SELECT AVG(工资)FROM salary)

8、(书上未讲)

9、(书上未讲)

10、

USE factory

GO

SELECT count(*)AS'职工人数'FROM worker

BEGIN TRANSACTION

INSERT INTO worker VALUES(20,'陈立','女

','03/08/1955',1,'10/10/1975',101)

SELECT COUNT(*)AS'职工人数'FROM worker

四.测试数据与实验结果

1、

相关文档
最新文档