上海大学数据库上机作业上机练习 下载本文

内容发布更新时间 : 2024/12/26 23:04:09星期一 下面是文章的全部内容请认真阅读。

上海大数据库

《数据库系统与应用》上机习题*************************************************************************************************

第六部分、SQL高级应用

要求掌握:熟练掌握T-SQL语言,了解事务处理的相关语句,学会用游标方式对数据库进行操作。

一、写出书上练习题10中第14、15、16、17题的结果,并上机验证。完成第20、21、22、23、24题

14.给出下列程序的执行结果

USE school

SELECT sno,cno,degree FROM score

WHERE sno IN (103,105) ORDER BY sno

COMPUTE AVG(degree) BY sno GO

15.给出下列程序的执行结果

USE school GO

SELECT teacher.tname AS '教师',student.sclass AS '班号',AVG(score.degree) AS '平均分' FROM student,course,score,teacher

WHERE student.sno=score.sno AND course.cno=score.cno AND course.tno=teacher.tno GROUP BY teacher.tname,student.sclass WITH CUBE GO

16.给出下列程序的执行结果

USE school GO

BEGIN TRANSACTION Mytran --启动事务

INSERT INTO teacher

1

VALUES(999,'张瑛','男','1960/03/05','教授','计算机系') --插入一个教师记录 SAVE TRANSACTION Mytran --保存点

INSERT INTO teacher

VALUES(888,'胡丽','男','1982/8/04','副教授','电子工程系') ROLLBACK TRANSACTION Mytran COMMIT TRANSACTION GO

SELECT *

FROM teacher --查询教师表的记录 GO

DELETE teacher WHERE tno='999' --删除插入的记录 GO

17.编写一个程序,查询最高分的课程名

USE school SELECT cname FROM course,score

WHERE score.cno=course.cno AND degree=(SELECT MAX(degree) FROM score)

二、完成书上上机实验题5

1.1)进入企业管理器,展开数据库,单击“factory”,单击下方的“关系图”。 2)在数据库关系图中,选择要表示要从关系图中删除的关系的联接线。 3)右击关系线,并从快捷菜单中选择“从数据库中删除关系”。 4)出现一个消息框,提示确认删除。单击“是”按钮。

2.USE factory

SELECT worker.职工号,worker.姓名,salary.工资 FROM worker,salary

WHERE worker.职工号=salary.职工号 ORDER BY worker.职工号,worker.姓名 COMPUTE SUM(salary.工资) BY worker.职工号

3.USE factory

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

WHERE worker.职工号=salary.职工号 AND worker.部门号=depart.部门号 GROUP BY worker.性别,depart.部门名 WITH CUBE ORDER BY worker.性别,depart.部门名

4.USE factory GO

2

INSERT INTO worker VALUES(20,'陈立','女','55/03/08',1,'75/10/10',4) GO

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

SELECT worker.职工号,worker.姓名,depart.部门名 FROM worker FULL JOIN depart ON(worker.部门号=depart.部门号) ORDER BY worker.职工号 GO

DELETE FROM worker WHERE 职工号='20' GO

DELETE FROM depart WHERE 部门号='5' GO

5.USE factory

SELECT worker.职工号,worker.姓名,depart.部门名,salary.日期,salary.工资 FROM worker,salary,depart

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

6.USE factory SELECT 部门名 FROM depart

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

7.USE factory

SELECT 职工号,姓名 FROM worker

WHERE 职工号 IN(SELECT 职工号 FROM salary

GROUP BY 职工号 HAVING AVG(工资)<(SELECT AVG(工资) FROM salary ))

8.USE factory GO

SET NOCOUNT ON --声明变量

DECLARE @dname char(10) --声明游标

DECLARE d_cursor CURSOR FOR SELECT 部门名 FROM depart WHERE 部门号= (SELECT 部门号 FROM worker WHERE 职工号= (SELECT 职工号 FROM salary WHERE 工资=

(SELECT MAX(工资) FROM salary ) ) )

--打开游标

3