计算机三级数据库技术(数据库后台编程技术)机试模拟试卷8
选择题
1.设在SQL Server 2008中,某关系表需要存储职工的工资信息,工资的范围为2000~10000,设用整型类型存储。下列数据类型中最合适的是( )(B)
A. int
B. smallinto
C. tinyint
D. bigint
解析:本题主要是对数字类型的区别,体现在表示的位数和存储字长上面。有符号Bigint从-263到263-1的整型数据,存储大小为8个字节﹔有符号int是从-231到231-1的整型数据,存储大小为4个字节﹔有符号Smallint是从-215到215-1的整型数据,无符号smallint从0到216-1,存储大小为2个字节;Tinyint从0到255的整型数据,存储大小为1字节。所以选B。
2.在SQL Server 2008中,设在某数据库中建有如下所示的存储过程:
CREATE PROC P1
@a int= 20,@b char(4)
AS……
设有下列调用该存储过程的语句:
Ⅰ.EXEC P1 100,‘a01’
Ⅱ.EXEC P1 ‘a01’
Ⅲ.EXEC P1 @b=a01’
Ⅳ.EXEC P1 @a=default,@b=‘a01’
上述语句中,能够正确调用该存储过程的是((C)
A. 仅Ⅰ和Ⅱ
B. 仅Ⅰ、Ⅱ和Ⅲ
C. 仅Ⅰ、Ⅲ和Ⅳ
D. 全部
解析:由题目存储过程可知,存储过程p1定义了两个带有默认值的参数。执行多个输入参数的存储过程时,参数的传递方式有两种:按照参数位置传递值和按参数名称传递值。如果定义了默认值,则在执行存储过程时可以不必指定该参数的值。但若按照参数位置传递值时必须从左往右赋值,即不能跳过左边的某个默认参数而传递某个值。Ⅱ中的参数赋值采用按参数位置传值,必须从左到右赋值。其他三项均符合存储过程的调用规则。
3.下列关于存储过程的说法,错误的是( )。(C)
A. 利用存储过程可以进行模块化程序设计
B. 存储过程可以接受多个输入参数,并可返回多个输出结果
C. 存储过程是指存储在客户端的可调用执行的代码段
D. 存储过程的返回结果可以是一个集合
解析:存储过程是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。利用存储过程可以进行模块化程序设计是存储过程优点之一。故答案为C选项。
4.设在SQL Server 2008中有如下定义触发器的语句:
CREATE TRIGGER tri ON T1 INSTEAD OF INSERT AS ……
下列关于该触发器执行机制的说法,正确的是( )。(B)
A. 当在T1表上执行INSERT操作时,先执行INSERT操作,然后再执行tri触发器
B. 当在T1表上执行INSERT操作时,只执行tri触发器,而不实际执行INSERT操作
C. 当在T1表上执行INSERT操作时,先执行tri触发器,然后再实际执行INSERT操作
D. 当在T1表上执行INSERT操作时,先执行INSERT操作,如果操作正确,则无需执行tri触发器
解析:使用FOR或者AFTER选项定义的触发器为后触发型触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行该触发器。使用INSTEAD OF选项定义的触发器为前触发型触发器,在这种模式的触发器中,指定执行触发器而不是执行引发触发器执行的SQL语句,从而替代触发的操作。因此,可知本题中属于前触发器,即只执行tri触发器,而不实际执行INSERT操作。故答案为B项。
5.下列关于存储过程的说法,正确的是( )。(B)
A. 一个存储过程不能同时有输入参数和输出参数
B. 一个存储过程可以有多个输出参数
C. 存储过程的输出参数不能是日期类型的
D. 一个存储过程不能有多个输入参数
解析:在创建存储过程时可以声明一个或多个参数。除非定义了参数的默认值或者将参数设置为等于另外一个参数,否则用户在调用存储过程时必须为每个声明的参数提供值。一个存储过程最多可以有2100个参数。所有数据类型都可以用作存储过程的参数。故答案为B选项。
6.下列关于触发器的说法,错误的是( )。(C)
A. 利用触发器可以实现复杂的完整性约束
B. 后触发型触发器是先执行引发触发器的操作,再执行触发器自身的操作
C. 引发触发器执行的操作是增、删、改、查
D. 前触发型触发器是只执行触发器自身的操作,而忽略引发触发器的操作
解析:SQL Server 2008支持三种类型的触发器:DML、DDL和登录触发器。DML事件是针对表或视图的INSERT、UPDATE或DELETE语句。DDL事件主要对应T-SQL中的CREATE、ALTER和DROP语句,以及执行类似DDL操作的某些系统存储过锂。登录触发器在遇到LOGON事件时触发,LOGON事件是在建立用户会话时引发的。故答案为C选项。
7.在SQL Server 2008中,设表T(a,b)上建有如下触发器:
CREATE TRIGGER tri_update ON T FOR UPDATE AS
IF EXISTS(SELECT * FROM inserted
WHERE b not between 0 and 100)
ROLLBACK
设表T中已有数据:(‘a01’,90),如果执行语句:
UPDATE T SET b = 100 WHERE a = ‘a01’
则触发器临时工作表及执行完该语句后表T中的数据为( )(C)
A. T表:(‘a01’,100)
INSERTED表:(‘a01’,90)
DELETED表:(‘a01’,100)
B. T表:(‘a01’,90)
INSERTED表:(‘a01’,90)
DELETED表:(‘a01’,100)
C. T表:(‘a01’,100)
INSERTED表:(‘a01’,100)
DELETED表:(‘a01’,90)
D. T表:(‘a01’,90)
INSERTED表:(‘a01’,100)
DELETED表:(‘a01’,90)
解析:用FOR关键字定义的触发器为后触发型触发器,即只有在引发触发器执行的语句中指定的操作都已成功执行,并且所有的约束检查也成功完成后才执行触发器。其中INSERTED表用于存储INSERT和UPDATE语句所影响行的新值的副本,DELETED表用于存储DELETE和UPDATE语句所影响行的旧值的副本。在执行”UPDATE T SET b=100 WHERE a=‘a01’”之后,T表为:(‘a01’,100),I
本文档预览:3600字符,共14302字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载