云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 习题答案

习题答案

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 12:08:18

GO

CREATE PROCEDURE GRADE_INFO @C_NAME VARCHAR(50)

AS

SELECT CNAME,SC.SNO,SNAME,GRADE

FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND CNAME=@C_NAME

GO

7.在教学管理数据库中,创建一个INSERT触发器TR_C_INSERT,当在C表中插入一条新记录时,触发该触发器,并给出“你插入了一门新的课程!”的提示信息。

解:

CREATE TRIGGER TR_C_INSERT ON C FOR INSERT

AS

PRINT '你插入了一门新的课程!'

GO

8-8 在教学管理数据库中,创建一个AFTER触发器,要求实现以下功能:在SC表上创建一个插入、更新类型的触发器TR_GRADE_CHECK,当在GRADE字段中插入或修改成绩后,触发该触发器,检查分数是否在0~100之间。

解:

CREATE TRIGGER TR_GRADE_CHECK ON SC FOR

INSERT,UPDATE

AS

DECLARE @SC_grede tinyint SELECT @SC_grade=SC.grade FROM SC

IF (@SC_grade NOT BETWEEN 0 AND 100)

PRINT '你插入的成绩不在0~100之间!'

GO

9.在教学管理数据库中,创建用户定义函数C_MAX,根据输入的课程名称,输出该门课程最高分数的同学学号。

解:

USE JXGL GO

CREATE FUNCTION C_MAX (@C_NAME CHAR(8)) RETURNS REAL AS

BEGIN

DECLARE @S_MAX REAL

SELECT @S_MAX=MAX(GRADE)

FROM SC JOIN C ON SC.CNO=C.CNO AND C.CNAME=@C_NAME RETURN @S_MAX

END GO

10.在教学管理数据库中,创建用户定义函数SNO_INFO,根据输入的课程名称,输出选修该门课程的学生学号、姓名、性别、系部、成绩。

解:

USE JXGL GO

CREATE FUNCTION SNO_INFO (@C_NAME CHAR(8)) RETURNS TABLE AS

RETURN(SELECT S.SNO,SNAME,SEX,SDEPT,GRADE

FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND C.CNAME=@C_NAME)

GO

习 题 9

1.名词解释:

事务 封锁 保存点 死锁 答:

事务:就是用户对数据库进行的一系列操作的集合,对于事务中的系列操作要么全部完成,要么全部不完成。

封锁:是使事务对它要操作的数据有一定的控制能力。封锁机制主要是为了对并发操作进行控制,对干扰进行封锁,保证数据的一致性和准确性。

保存点:是事务在某一点处设置一个标记,这样当使用回滚语句时,可以不用回滚到事务的起始位置,而是回滚到标记所在的位置。

死锁:它是指系统中有两个或两个以上的事务都处于等待状态,并且每个事务都在等待其中另一个事务解除封锁,它才能继续执行下去,结果造成任何一个事务都无法继续执行。

2.简述显式事务与隐式事务的区别。

答:显式事务是由用户自己指定的事务,使用关键字BEGIN TRANSACTION和ROLLBACK TRANSACTION或COMMIT TRANSACTION进行事务的开始和终止事务的操作。

隐式事务又称自动提交事务。它在执完语句后自动提交事务,而且可以通过SET IMPLICIT_TRANSACTIONS ON /OFF来打开和关闭隐式事务。

3.描述并发控制可能产生的影响。

答:多个用户访问同一个数据资源时,如果数据存储系统没有并发控制,就会出现并发问题;比如当两个或多个事物选择同一行,然后根据最初选定的值更新该行是,就会出现更新丢失的问题;当一个事物多次访问同一行且每次读取不同数据时,会出现不可重复读问题;当对某行执行插入或删除操作,而该行属于某事务正在读取的行的范围时,就会出现幻

读问题;即读出的是不正确的临时的临时数据。

4.如何在事务中设置保存点,保存点有什么用途?

答:保存点提供了一种机制,用于回滚部分事务。可以使用 SAVE TRANSACTION savepoint_name 语句创建一个保存点,然后再执行 ROLLBACK TRANSACTION savepoint_name 语句回滚到该保存点,从而无须回滚到事务的开始。在不可能发生错误的情况下,保存点很有用。在很少出现错误的情况下使用保存点回滚部分事务,比让每个事务在更新之前测试更新的有效性更为有效。更新和回滚操作代价很大,因此只有在遇到错误的可能性很小,而且预先检查更新的有效性的代价相对很高的情况下,使用保存点才会非常有效。

5.如何才能尽量避免发生死锁?

答:虽然不能完全避免死锁,但可以使死锁的数量减至最少。防止死锁的途径就是不能让满足死锁的条件发生,为此,用户需要遵循以下原则:

(1) 尽量避免并发地只执行更新数据的语句。

(2) 要求每个事务一次就将所有要使用的数据全部加锁,否则就不予执行。

(3) 预先规定一个封锁顺序,所有的事务都必须按这个顺序对数据执行封锁。例如,不同的过程在事务内部对对象的更新执行顺序尽量保持一致。

(4) 每个事务的执行时间不可太长,在业务允许的情况下可以考虑将事务分割成为几个小事务来执行。

(5) 将逻辑上在一个表中的数据尽量按行或列分解为若干小表,以便改善对表的访问性能。一般来讲,如果数据不是经常被访问,那么死锁就不会经常发生。

(6) 将经常更新的数据库和查询数据库分开。

6.在教学管理数据库中,创建一个事务,将所有“C3”号课程的女同学加5分,并提交。

解:

USE JXGL GO

DECLARE @TranName VARCHAR(20) SELECT @TranName='Add_Grade'

BEGIN TRAN @TranName

UPDATE SC SET GRADE=GRADE+5

FROM S JOIN SC ON S.SNO=SC.SNO AND CNO='C3'

COMMIT TRAN @TranName

GO

7. 在教学管理数据库中,创建一个事务,向C表添加一条记录,设置保存点;再将“C4”号课程的任课老师更改为“王晓清”。

解:

USE JXGL GO

BEGIN TRAN

INSERT INTO C

VALUES('C11','数学建模','MA','李守信') SAVE TRAN savepoint UPDATE C

SET TNAME='王晓清' WHERE CNO='C4'

COMMIT TRAN GO

习 题 10

1.名词解释:

身份验证 登录帐户 数据库用户 角色 答:

身份验证:是指确定登录SQL Server的用户的登录账户(也称为“登录名”)和密码是否正确,以此来验证其是否具有连接SQL Server的权限。

登录账户:是用来登录到SQL Server服务器,但是要访问某个数据库,还需要有这个数据库的用户帐户,这是不同级别的安全机制了。

数据库用户:是指访问指定数据库的用户,这就需要设置每个用户访问对应数据库的权限,以提高数据库的安全性。

角色:是为了方便权限管理而设置的管理单位,它是一组权限的集合。将数据库用户按所享有的权限进行分类,即定义为不同的角色。

2.SQL Server有几种身份验证方式,它们的区别是什么? 答:SQL Server提供了两种对用户进行身份验证的模式:Windows验证模式、SQL Server 和Windows 混合验证模式,默认模式是Windows身份验证模式。其中Windows验证模式只适用于能够提供有效身份验证的Windows操作系统。混合验证模式允许基于Windows的和基于SQL Server的身份验证,系统直接采用Windows的身份验证机制,否则SQL Server将通过账户的存在性和密码的匹配性自行进行验证,即采用SQL Server身份验证模式。

3.简述角色的概念及其分类。

答:角色是为了方便权限管理而设置的管理单位,它是一组权限的集合。SQL Server中有两类角色,分别为固定角色和用户定义数据库角色。每一个固定角色都拥有一定级别的服务器和数据库管理职能。根据它们对服务器或数据库的管理职能,固定角色又分为固定服务器角色和固定数据库角色。

4.简述固定服务器角色和固定数据库角色的区别。

答:固定服务器角色是相对于服务器而言的,他们的权限都是固定的,并且不能新建或删除固定服务器角色,而自定义数据库角色是可以添加和删除的,并且可以给它授予不同的权限。db_owner是数据库的拥有都,对数据库具有完全控制权限。

5.简述进行权限设置时,授予、拒绝或撤销三者之间的关系。

答:授予:用户被授予特定数据库对象的某种操作权限,该用户就可以对数据在此权限范围内进行操作;

撤销:用户不再具有特定数据库对象的某种操作权限,但用户可以通过其组或角色成员身份继承此种权限;

拒绝:禁止用户对特定数据库对象的某种操作权限,防止用户通过其组或角色成员身份继承此种权限。

6.在教学管理数据库中,创建SQL Server登录帐户User_L1和User_L2,并在此基础上创建数据库用户User_x1和User_x2。

解:

USE JXGL GO

搜索更多关于: 习题答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

GO CREATE PROCEDURE GRADE_INFO @C_NAME VARCHAR(50) AS SELECT CNAME,SC.SNO,SNAME,GRADE FROM S JOIN SC ON S.SNO=SC.SNO JOIN C ON SC.CNO=C.CNO AND CNAME=@C_NAME GO 7.在教学管理数据库中,创建一个INSERT触发器TR_C_INSERT,当在C表中插入一条新记录时,触发该触发器,并给出“你插入了一门新的课程!”的提示信息。 解: CREATE TRIGGER TR_C_INSERT ON C FOR INSERT

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com