第 10章 SQL高级应用(2)

2019-04-16 17:31

FETCH NEXT FROM st_cursor INTO @c_name,@s_avg --打印表标题

PRINT '课程 平均分'

PRINT '-----------------' WHILE @@FETCH_STATUS = 0 BEGIN

--打印一行数据

PRINT @c_name+' '+CAST(@s_avg AS char(10)) --提取下一行数据

FETCH NEXT FROM st_cursor INTO @c_name,@s_avg END

--关闭游标

CLOSE st_cursor --释放游标

DEALLOCATE st_cursor GO

第10第1章章 SQL高级应用 网站与网页概述

6

其执行结果如下:

23.编写一个程序,采用游标方式输出所有学号、课程号和成绩等级。 解:程序如下:

USE school GO

--声明变量

DECLARE @no1 char(5),@no2 char(6),@fs char(2) --声明游标

DECLARE fs_cursor CURSOR FOR SELECT sno,cno, CASE

WHEN degree>=90 THEN 'A' WHEN degree>=80 THEN 'B' WHEN degree>=70 THEN 'C' WHEN degree>=60 THEN 'D' WHEN degree<60 THEN 'E' END

FROM score WHERE degree IS NOT NULL ORDER BY sno --打开游标

OPEN fs_cursor --提取第一行数据

FETCH NEXT FROM fs_cursor INTO @no1,@no2,@fs --打印表标题

PRINT '学号 课程号 等级' PRINT '-----------------' WHILE @@FETCH_STATUS = 0 BEGIN

--打印一行数据

PRINT @no1+' '+@no2+' '+@fs --提取下一行数据

FETCH NEXT FROM fs_cursor INTO @no1,@no2,@fs END

--关闭游标

CLOSE fs_cursor --释放游标

DEALLOCATE fs_cursor GO

其执行结果如下:

第10第1章章 SQL高级应用 网站与网页概述

7

24.编写一个程序,采用游标方式输出各班各课程的平均分。 解:程序如下:

USE school GO

--声明变量

DECLARE @bh char(5),@kc char(10),@fs float --声明游标

DECLARE fs_cursor CURSOR

FOR SELECT s.sclass,c.cname,AVG(sc.degree) FROM student s,course c,score sc

WHERE s.sno=sc.sno AND c.cno=sc.cno AND sc.degree IS NOT NULL GROUP BY s.sclass,c.cname --打开游标

OPEN fs_cursor --提取第一行数据

FETCH NEXT FROM fs_cursor INTO @bh,@kc,@fs --打印表标题

PRINT '班号 课程 平均分'

PRINT '---------------------------' WHILE @@FETCH_STATUS = 0 BEGIN

--打印一行数据

PRINT @bh+' '+@kc+' '+CAST(@fs AS varchar(10)) --提取下一行数据

FETCH NEXT FROM fs_cursor INTO @bh,@kc,@fs END

--关闭游标

CLOSE fs_cursor --释放游标

DEALLOCATE fs_cursor GO

其执行结果如下:

上机实验题5参考答案

在上机实验题4建立的factory数据库上,完成如下各题(所有SELECT语句的查询结果以文本格式显示)。 (1)删除factory数据库上各个表之间建立的关系。 (2)显示各职工的工资记录和相应的工资小计。

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

第10第1章章 SQL高级应用 网站与网页概述

8

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

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

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

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

对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然后删除这两个插入的记录。

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

(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。 (8)采用游标方式实现(6)小题的功能。 (9)采用游标方式实现(7)小题的功能。 (10)先显示worker表中的职工人数,开始一个事务,插入一个职工记录,再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。

操作过程

(1)删除factory数据库上各个表之间建立的关系的操作步骤如下:

①启动SQL Server管理控制器。

②在“对象资源管理器”中展开LCB-PC服务器节点。 ③展开“数据库”节点。 ④选中school,将其展开。

⑤展开“数据库关系图”节点。

⑥选中dbo.Diagram_1,右击,在出现的快捷菜单中选择“修改”命令,如图10.1所示。 ⑦在数据库关系图中,选择表示要从关系图中删除的关系的连接线(对于两条连线均进行⑦~⑨的操作)。

⑧右击关系线,从快捷菜单中选择“从数据库中删除关系”命令。 ⑨出现一个消息框,提示确认删除。单击“是”按钮。 ⑩在出现的对话框中单击“是”按钮保存所做的修改。

这样就将worker表和depart表以及worker表和salary表之间的关系删除了。

图10.1 factory数据库关系图

第10第1章章 SQL高级应用 网站与网页概述

9

(2)对应的程序如下:

USE factory GO

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

WHERE worker.职工号=salary.职工号 ORDER BY worker.职工号,worker.姓名

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

执行结果如下:

职工号姓名工资

---------- ---------- ---------------------- 1 孙华 1201.5 1 孙华 12010.5 sum

---------------------- 2408

职工号姓名工资

---------- ---------- ---------------------- 10 陈涛 1245.8 10 陈涛 1250.8 sum

---------------------- 24910.6

职工号姓名工资

---------- ---------- ---------------------- 11 刘欣 1255 11 刘欣 1250 sum

---------------------- 2505

职工号姓名工资

---------- ---------- ---------------------- 12 李涵 1345 12 李涵 1350 sum

---------------------- 2695

职工号姓名工资

---------- ---------- ---------------------- 13 王小燕 1205 13 王小燕 1200 sum

---------------------- 2405

职工号姓名工资

---------- ---------- ---------------------- 14 李艺 1000.6 14 李艺 1005.6 sum

---------------------- 20010.2

职工号姓名工资

---------- ---------- ---------------------- 15 魏君 1105 15 魏君 1100 sum

---------------------- 2205

职工号姓名工资

---------- ---------- ---------------------- 2 孙天奇 905 2 孙天奇 900 sum

---------------------- 1805

职工号姓名工资

---------- ---------- ---------------------- 3 陈明 1350.6 3 陈明 1355.6 sum

---------------------- 27010.2

职工号姓名工资

---------- ---------- ---------------------- 4 李华 1500.5 4 李华 1505.5 sum

---------------------- 3006

职工号姓名工资

---------- ---------- ---------------------- 5 余慧 730 5 余慧 725 sum

---------------------- 1455

职工号姓名工资

---------- ---------- ---------------------- 6 欧阳少兵 1085 6 欧阳少兵 1085 sum

---------------------- 2170

职工号姓名工资

---------- ---------- ---------------------- 7 程西 755.8 7 程西 750.8 sum

---------------------- 15010.6

职工号姓名工资

---------- ---------- ---------------------- 8 张旗 728 8 张旗 733 sum

第10第1章章 SQL高级应用 网站与网页概述

10


第 10章 SQL高级应用(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:五行生克

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: