上海大学数据库上机作业上机练习

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

上海大数据库

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

第六部分、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 A VG(degree)BY sno

GO

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

USE school

GO

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

FROM student,course,score,teacher

WHERE student.sno=score.sno AND o=o AND course.tno=teacher.tno

GROUP BY teacher.tname,student.sclass WITH CUBE

GO

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

USE school

GO

BEGIN TRANSACTION Mytran

--启动事务

INSERT INTO teacher

V ALUES(999,'张瑛','男','1960/03/05','教授','计算机系')

--插入一个教师记录

SA VE TRANSACTION Mytran

--保存点

INSERT INTO teacher

V ALUES(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 o=o AND degree=(SELECT MAX(degree)FROM score)

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

1.1)进入企业管理器,展开数据库,单击“factory”,单击下方的“关系图”。2)在数据库关系图中,选择要表示要从关系图中删除的关系的联接线。3)右击关系线,并从快捷菜单中选择“从数据库中删除关系”。

4)出现一个消息框,提示确认删除。单击“是”按钮。

E factory

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

FROM worker,salary

WHERE worker.职工号=salary.职工号

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

COMPUTE SUM(salary.工资)BY worker.职工号

E factory

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

FROM worker,salary,depart

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

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

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

E factory

GO

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

GO

INSERT INTO depart V ALUES(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

E factory

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

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

AND salary.工资=(SELECT MAX(工资)FROM salary)

E factory

SELECT部门名

FROM depart

WHERE部门号=(SELECT部门号FROM worker

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

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

E factory

SELECT职工号,姓名

FROM worker

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

GROUP BY职工号HA VING A VG(工资)<(SELECT A VG(工资)FROM salary)) E 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)

)

)

--打开游标

相关文档
最新文档