数据库原理及应用 实验五T-SQL高级应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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、