一、.创建带有输入和输出参数的存储过程。
A..创建计算某个学生的个人平均成绩的通用存储过程PJ,执行存储过程PJ,并打印学号=‘ 9601005’计算结果。
use xssjkgocreate procedure PJ@st_no char(8),@average float outputasselect @average=avg(成绩)from 成绩Where 学号=@st_nogo执行存储过程:declare @average floatexec PJ'9601002',@average outputprint @averageB.创建统计某门课程选课人数的通用存储过程TJ,执行存储过程TJ,打印课程号=‘005’的计算结果。
use xssjkgocreate procedure TJ1@kch char(3),@xk int outputasselect @xk=COUNT(学号)from 成绩where 课程号=@kchgroup by 课程号Go执行存储过程;use xssjkgodeclare @xk intexec TJ1'001',@xk outputprint @xk二、1.什么是游标?为什么要使用游标?(1)游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果每个游标区都有一个名字,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。
(2)SQL语言与主语言具有不同数据处理方式SQL语言是面向集合的,一条SQL语句原则上可以产生或处理多条记录;主语言是面向记录的,一组主变量一次只能存放一条记录;仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求。
2.创建游标及使用游标的步骤?(1)创建:使用declare语句语句格式declare <游标名> scroll cursorfor <SELECT语句>;(2)步骤:1.说明游标2.打开游标3.推进游标指针并取当前记录4.关闭游标3.创建游标pjcj,打印平均成绩第3名的学生的学号、平均成绩use xssjkdeclare pjcj SCROLL CURSORFORSELECT 学号,avg(成绩)FROM dbo.成绩GROUP BY 课程号, 成绩, 学号ORDER BY avg(成绩) DESCopen pjcjdeclare @xh nvarchar(7),@avggrade intfetch absolute 3from pjcjinto @xh,@avggradeprint '第三名的学号是:'+@xhprint '第三名的平均成绩是:'+str(@avggrade)close pjcj4.创建游标secon,打印成绩第2名的学生的学号、总成绩use xssjkDECLARE secon SCROLL CURSORFOR SELECT 学号,sum(成绩)FROM dbo.成绩GROUP BY 成绩,学号ORDER BY sum(成绩) DESCopen seconDECLARE @xh nvarchar(7),@cj intFETCH ABSOLUTE 2FROM seconinto @xh,@cjprint '第二名的学号是:'+@xhprint '第二名的成绩是:'+str(@cj)Close secon5.把上述两个游标作为储存过程p34创建到数据库服务器中,执行该过程use xssjkgocreate procedure PJCJ@xh char(8) output,@cj numeric(6,2) outputasDECLARE seconx SCROLL CURSORFORSELECT 学号,sum(成绩)FROM dbo.成绩GROUP BY 成绩,学号ORDER BY sum(成绩) DESCopen seconxFETCH ABSOLUTE 2FROM seconxinto @xh,@cj执行过程:use xssjkdeclare @xh char(8),@cj numeric(6,2)exec PJCJ @xh output,@cj outputprint @xh1.2.关系SC(SN,CN,CJ)是第几范式?为什么?是第一、第二、第三范式。
首先,它属于第一范式,SC所有属性都是不可分的基本数据项;再者,它属于第二范式,SC中CJ属性完全函数依赖于SN和CN;最后,它属于第三范式,非主属性只有一个,不存在函数依赖关系。
3.创建游标,查询统计选课人数为第3名的课程号,打开游标,把选课人数为第3名的课程号及选课人数打印出来。
use xssjkDECLARE pjcj SCROLL CURSORFOR SELECT 课程号,sum(课程号) as ‘选课人数’FROM dbo.成绩GROUP BY 课程号ORDER BY sum(课程号) DESCopen pjcjDECLARE @kch nvarchar(7),@num intFETCH ABSOLUTE 3FROM pjcjinto @ kch,@ numprint '课程号:'+@kchprint '选课人数:'+str(@num)Close pjcj4,创建存储过程,查询总成绩为第1名的。
执行存储过程,把总成绩为第一名的课程号及总成绩打印出来。
use xssjkgocreate procedure zcj1@kch char(3) output,@szcj int outputasselect top 1 @kch=课程号,@szcj=sum(成绩)from 成绩group by 课程号order by sum(成绩) DESCgo执行存储过程use xssjkgodeclare @kch char(3) ,@szcj intexec zcj1 @kch output,@szcj outputprint '课程号'+@kchprint '总成绩'+str(@szcj)4.什么是事务?其特性是什么?事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。
事务特性:(1)原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。
(2)一致性或可串性。
事务的执行使得数据库从一种正确状态转换成另一种正确状态(3)隔离性。
在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,(4) 持久性。
事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。
5.什么是数据库权限?具体怎样分配权限?、数据库审计?数据库权限:指对数据库各种数据内容的可操作性。
分配权限:(1)授权:crant <权限>[,<权限>]…on<对象权限><对象权限>[,<对象类型><对象名>]…to<用户>[,<用户>]…[with crant option](2)权限收回:revoke <权限>[,<权限>]…On <对象权限><对象权限>[,<对象类型><对象名>]…From <用户>[,<用户>]…[cascade|restrict]` (3)权限拒绝:deny{all[privileges]}|permission[(column[,…n])][,…n][on[class::]securable]To principal[,…n][cascade][as principal]数据库审计:能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,对攻击行为进行阻断。
它通过对用户访问数据库行为的记录、分析和汇报,用来帮助用户事后生成合规报告、事故追根溯源,同时加强内外部数据库网络行为记录,提高数据资产安全。
6.简述关系数据库的实体完整性和参照完整性。
实体完整性:若属性A是关系R的主属性,则属性A不能取空值。
参照完整性:若F是关系R中对应关系S的外键,则对于R中的每个元组在F上的值或者取空,或者等于S中某个元组的主键值。
7.什么是自然连接?它与等值连接有什么区别?自然连接:是一种特殊的等值连接,两个关系中进行比较的分量必须是相同的属性组,在结果中把重复的属性列去掉。
区别:(1)等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同。
(2)等值连接不将重复的去掉,而自然连接去掉重复属性。
1.什么是三范式?举例说明。
第一范式(1NF):关系模型R的所有属性都是不可分的基本数据项。
第二范式(2NF):关系模型属于第一范式,并且每一个非主属性都完全函数依赖于R的码。
第三范式(3NF):关系模型R中非主属性不存在函数依赖关系。
8.创建游标名为CJPX,对学号9601002各门课程的成绩进行降序排列,打开游标,打印排名第二的课程号及成绩。
use xssjkDECLARE CJPX SCROLL CURSORFOR SELECT课程号,成绩FROM dbo.成绩where学号='9601002'ORDER BY成绩DESCopen CJPXDECLARE@kch nvarchar(24),@cj intFETCH ABSOLUTE 2FROM CJPXinto@kch,@cjprint'课程名:'+@kchprint'成绩:'+str(@cj)Close CJPX9.创建存储过程P1,统计课程号=005的选课人数,执行存储过程P1,并打印统计结果use xssjkgocreate procedure P1@xk int outputasselect@xk=COUNT(课程号)from成绩where课程号='005'go执行存储过程use xssjkgodeclare@xk intexec P1@xk outputprint'选课人数'+str(@xk)。