7. 在数据库管理系统的三级封锁协议中,一级封锁协议能够解决的问题是
A.丢失修改 C.读脏数据
B.不可重复读 D.死锁
A
8. 若系统中存在4个等待事务T0、T1、T2和T3,其中T0正等待被T1锁住的数据项A1,T1正等待被T2锁住的数
据项A2,T2正等待被T3锁住的数据项A3, B
A.活锁 C.封锁
B.死锁 D.正常
T3正等待被T0锁住的数据项A0。则此时系统所处的状态是
9. 事务一旦提交,其对数据库中数据的修改就是永久的,以后的操作或故障不会对事务的操作结果产生任何影响。
这个特性是事务的 A.原子性 C. 隔离性
D
B.一致性
D.持久性
10. 在多个事务并发执行时,如果事务T1对数据项A的修改覆盖了事务T2对数据项A的修改,这种现象称为
A
A.丢失修改 C.不可重复读
B.读脏数据 D.数据不一致
11. 在多个事务并发执行时,如果并发控制措施不好,则可能会造成事务T1读了事务T2的“脏”数据。这里的“脏”
数据是指
D
B.T1回滚后的数据 D.T2回滚后的数据
B
A.T1回滚前的数据 C.T2回滚前的数据
12. 在判断死锁的事务等待图中,如果等待图中出现了环路,则说明系统
A.存在活锁 C.事务执行成功 二. 填空题
B.存在死锁 D.事务执行失败
1.为防止并发操作的事务产生相互干情况,数据库管理系统采用加锁机制来避免这种情况。锁的类型包括______和______。 共享锁(或S锁)
排他锁(或X锁)
2.一个事务可通过执行______语句来取消其已完成的数据修改操作。 ROLLBACK 3.事务应对要读取的数据加______锁,对要修改的数据加______锁。
共享(或S) 排他(或X)
4.要求事务在读数据项之前必须先对数据项加S锁,直到事务结束才释放该锁的封锁协议是______级封锁协议。 三 5.假设有两个事务T1和T2,它们要读入同一数据并进行修改,如果T2提交的结果覆盖了T1提交的结果,导致T1修改的结果无效。这种现象称为______。 丢失修改 6.在数据库环境下,进行并发控制的主要方式是_____。 加锁
7.如果总是将事务为两个阶段,一个是加锁期,一个是解锁期,在加锁期不允许解锁,在解锁期不允许加锁,则将该
规定称为_____。 两段锁协议
8.如果并发执行的所有事务都遵守两段锁协议,则这些事务的任何并发调度一定是_____。 可串行化的 9.一个事务只要执行了_____语句,其对数据库的操作就是永久的。 COMMIT
10.在单CPU系统中,如果存在多个事务,则这些事务只能交叉地使用CPU,将这种并发方式称为_____。 交叉并发 三. 简答题
5.设有如下三个事务:
T1:B = A + 1; T2:B = B * 2; T3:A = B + 1
(1)设A的初值为2,B的初值为1,如果这三个事务并发的执行,则可能的正确的执行结果有哪些?
T1?T2?T3:A=7, B=6 T1?T3?T2:A=4, B=8 T2?T1?T3:A=4, B=3 T2?T3?T1:A=3, B=4 T3?T1?T2:A=2, B=6 T3?T2?T1:A=2, B=3
(2)给出一种遵守两段锁协议的并发调度策略。
6.设有如图8-16所示的两个事务的调度过程,根据此图完成下列各题。 (1)写出事务T1和T2包含的操作。 T1:A = B+20
T2:B =A +30
(2)事务T1、T2开始之前B的初值是多少? B = 100
(3)设A的初值为20,则这两个事务所有可能的正确执行结果有哪些? T1?T2:A = 120,B = 150 T2?T1:A = 70,B = 50
(4)该调度方式是否遵守两段锁协议? 是
图8-16 事务调度图
第9章 数据库编程 一. 选择题
1.创建存储过程的用处主要是
A.提高数据操作效率 C.实现复杂的业务规则
2.下列关于存储过程的说法,正确的是
A
A
B.维护数据的一致性 D.增强引用完整性
A.在定义存储过程的代码中可以包含数据的增、删、改、查语句 B.用户可以向存储过程传递参数,但不能输出存储过程产生的结果 C.存储过程的执行是在客户端完成的 D.存储过程是存储在客户端的可执行代码段
3.设要定义一个包含2个输入参数和2个输出参数的存储过程,各参数均为整型。下列定义该存储过程的语句,正确的是
A.CREATE PROC P1 @x1, @x2 int,
@x3 , @x4 int output
B.CREATE PROC P1 @x1 int, @x2 int,
@x2, @x4 int output
C.CREATE PROC P1 @x1 int, @x2 int,
@x3 int, @x4 int output
D.CREATE PROC P1 @x1 int, @x2 int,
@x3 int output, @x4 int output t
4.设有存储过程定义语句:CREATE PROC P1 @x int, @y int output, @z int output。下列调用该存储过程的语句中,正确的是
B.EXEC P1 10, @a int, @b int output C.EXEC P1 10, @a output, @b output D.EXEC P1 10, @a, @b output
5.下列修改存储过程P1的语句,正确的语句是
A.ALTER P1 C.MODIFY P1
6. 下列删除存储过程P1的语句,正确的语句是
A.DELETE P1 C.DROP P1
7.定义触发器的主要作用是 D
A.提高数据的查询效率 C.加强数据的保密性
8.现有学生表和修课表,其结构为:
学生表(学号,姓名,入学日期,毕业日期) 修课表(学号,课程号,考试日期,成绩)
现要求修课表中的考试日期必须在学生表中相应学生的入学日期和毕业日期之间。下列实现方法中,正确的是
B
A.在修课表的考试日期列上定义一个CHECK约束
B.增强数据的安全性 D.实现复杂的约束
B
B.ALTER PROC P1 D.MODIFY PROC P1
D
B.DELETE PROC P1 D.DROP PROC P1 C
A.EXEC P1 10, @a int output, @b int output
D
B.在修课表上建立一个插入和更新操作的触发器 C.在学生表上建立一个插入和更新操作的触发器 D.在修课表的考试日期列上定义一个外码引用约束
9.设有教师表(教师号,教师名,职称,基本工资),其中基本工资的取值范围与教师职称有关,比如,教授的基本工资是6000~10000,副教授的基本工资是4000~8000。下列实现该约束的方法中,可行的是 C
A. 可通过在教师表上定义插入和修改操作的触发器实现 B. 可通过在基本工资列上定义一个CHECK约束实现 C. A和B都可以 D. A和B都不可以
10.设在SC(Sno,Cno,Grade)表上定义了触发器:
CREATE TRIGGER tri1 ON SC INSTEAD OF INSERT … 当执行语句:INSERT INTO SC VALUES('s001', 'c01',90)
会引发该触发器执行。下列关于触发器执行时表中数据的说法,正确的是 D A.SC表和INERTED表中均包含新插入的数据 B.SC表和INERTED表中均不包含新插入的数据
C.SC表中包含新插入的数据,INERTED表中不包含新插入的数据 D.SC表中不包含新插入的数据,INERTED表中包含新插入的数据 11.设在SC(Sno,Cno,Grade)表上定义了触发器:
CREATE TRIGGER tri1 ON SC AFTER INSERT … 当执行语句:INSERT INTO SC VALUES('s001', 'c01',90)
会引发该触发器执行。下列关于触发器执行时表中数据的说法,正确的是 A A.SC表和INERTED表中均包含新插入的数据 B.SC表和INERTED表中均不包含新插入的数据
C.SC表中包含新插入的数据,INERTED表中不包含新插入的数据 D.SC表中不包含新插入的数据,INERTED表中包含新插入的数据
12.当执行由UPDATE语句引发的触发器时,下列关于该触发器临时工作表的说法,正确的是 C
A.系统会自动产生UPDATED表来存放更改前的数据 B.系统会自动产生UPDATED表来存放更改后的数据
C.系统会自动产生INSERTED表和DELETED表,用INSERTED表存放更改后的数据,用DELETED表存放更改前的数据
D.系统会自动产生INSERTED表和DELETED表,用INSERTED表存放更改前的数据,用DELETED表存放更改后的数据
13.下列关于游标的说法,错误的是 D
A.游标允许用户定位到结果集中的某行 B.游标允许用户读取结果集中当前行位置的数据 C.游标允许用户修改结果集中当前行位置的数据
D.游标中有个当前行指针,该指针只能在结果集中单向移动
14.对游标的操作一般包括声明、打开、处理、关闭、释放几个步骤,下列关于关闭游标的说法,错误的是
A.游标被关闭之后,还可以通过OPEN语句再次打开 B.游标一旦被关闭,其所占用的资源即被释放 C.游标被关闭之后,其所占用的资源没有被释放
D.关闭游标之后的下一个操作可以是释放游标,也可以是再次打开该游标
B