2020数据库作业题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、.创建带有输入和输出参数的存储过程。
A..创建计算某个学生的个人平均成绩的通用存储过程PJ,执行存储过程PJ,并打印学号=
‘ 9601005’计算结果。
use xssjk
go
create procedure PJ
@st_no char(8),@average float output
as
select @average=avg(成绩)
from 成绩
Where 学号=@st_no
go
执行存储过程:
declare @average float
exec PJ'9601002',@average output
print @average
B.创建统计某门课程选课人数的通用存储过程TJ,执行存储过程TJ,打印课程号=‘005’的计算结果。
use xssjk
go
create procedure TJ1
@kch char(3),@xk int output
as
select @xk=COUNT(学号)
from 成绩
where 课程号=@kch
group by 课程号
Go
执行存储过程;
use xssjk
go
declare @xk int
exec TJ1'001',@xk output
print @xk
二、
1.什么是游标?为什么要使用游标?
(1)游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果
每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。
(2)SQL语言与主语言具有不同数据处理方式
SQL语言是面向集合的,一条SQL语句原则上可以产生或处理多条记录;
主语言是面向记录的,一组主变量一次只能存放一条记录;
仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求。
2.创建游标及使用游标的步骤?
(1)创建:
使用declare语句
语句格式
declare <游标名> scroll cursor
for
(2)步骤:
1.说明游标
2.打开游标
3.推进游标指针并取当前记录
4.关闭游标
3.创建游标pjcj,打印平均成绩第3名的学生的学号、平均成绩
use xssjk
declare pjcj SCROLL CURSOR
FOR
SELECT 学号,avg(成绩)
FROM dbo.成绩
GROUP BY 课程号, 成绩, 学号
ORDER BY avg(成绩) DESC
open pjcj
declare @xh nvarchar(7),@avggrade int
fetch absolute 3
from pjcj
into @xh,@avggrade
print '第三名的学号是:'+@xh
print '第三名的平均成绩是:'+str(@avggrade)
close pjcj
4.创建游标secon,打印成绩第2名的学生的学号、总成绩
use xssjk
DECLARE secon SCROLL CURSOR
FOR SELECT 学号,sum(成绩)
FROM dbo.成绩
GROUP BY 成绩,学号
ORDER BY sum(成绩) DESC
open secon
DECLARE @xh nvarchar(7),@cj int
FETCH ABSOLUTE 2
FROM secon
into @xh,@cj
print '第二名的学号是:'+@xh
print '第二名的成绩是:'+str(@cj)
Close secon
5.把上述两个游标作为储存过程p34创建到数据库服务器中,执行该过程use xssjk
go
create procedure PJCJ
@xh char(8) output,@cj numeric(6,2) output
as
DECLARE seconx SCROLL CURSOR
FOR
SELECT 学号,sum(成绩)
FROM dbo.成绩
GROUP BY 成绩,学号
ORDER BY sum(成绩) DESC
open seconx
FETCH ABSOLUTE 2
FROM seconx
into @xh,@cj
执行过程:
use xssjk
declare @xh char(8),@cj numeric(6,2)
exec PJCJ @xh output,@cj output
print @xh
1.
2.关系SC(SN,CN,CJ)是第几范式?为什么?
是第一、第二、第三范式。
首先,它属于第一范式,SC所有属性都是不可分的基本数据项;
再者,它属于第二范式,SC中CJ属性完全函数依赖于SN和CN;
最后,它属于第三范式,非主属性只有一个,不存在函数依赖关系。
3.创建游标,查询统计选课人数为第3名的课程号,打开游标,把选课人数为第3名的课程号
及选课人数打印出来。
use xssjk
DECLARE pjcj SCROLL CURSOR