计算机三级数据库后台编程技术练习题(二)、下列关于存储过程的说法、下列在T表的DELETES作上建立后触发型触发器的语句开始部分、下列定义该存储过程的接口、下列

1,269 阅读8分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

16.下列关于存储过程的说法,正确的是 A、一个存储过程可以有多个输入参数,但只能有一个输出参数 B、一个存储过程可以同时有输入参数和输出参数 C、一个存储过程不能有多个输出参数 D、一个存储过程不能有多个输入参数 参考答案为B

解析:存储过程与其他程序设计语言中的子程序或函数很类似。存储过程可以接受多个输入参数,并将多个值返回给调用过程(输出);包含执行数据库操作的编程语句;向调用过程返回状态值。

17.下列关于SQL Server数据库空间的说法,正确的是 A、数据库创建后可以手工缩小数据文件和日志文件的空间 B、数据库创建后可以手工缩小数据文件的空间,但不能缩小日志文件的空间 C、数据库创建后数据文件和日志文件的空间都不能被手工缩小 D、数据库创建后可以手工缩小日志文件的空间,但不能缩小数据文件的空间 参考答案为A

解析:收缩数据库就是释放数据库中未使用的空间,并将释放的空间交还给操作系统。数据文件和日志文件的空间都可以收缩。

18.在SQL Server中,若要授予用户U1在DB1数据库中具有创建视图的权限,下列授权语句正确的是 A、GRANT CREATE VIEW To U1 B、GRANT CREATE VIEW ON DB1 TO U1 C、GRANT U1 CREATE VIEW ON DB1 D、GRANT U1 CREATE VIEW 参考答案为A

解析:对象级授权命令中,视图权限中没有create权限,所以这里是语句级授权。 授予语句级别权限的GRANT语句的简化语法格式如下: GRANT {ALL | <statement_permission>[,…n]} TO <database_principal>[,…n] 由语法可知,应选A,而不能选B(B选项是对象级授权命令)。

19.下列关于sQLServer中db_datawriter角色的说法,正确的是 A、该角色是数据库级角色,具有查询、插入、删除和更改数据库中用户数据的权限 B、该角色是服务器级角色,具有插入、删除和更改服务器中用户数据的权限 C、该角色是服务器级角色,具有查询、插入、删除和更改服务器中用户数据的权限 D、该角色是数据库级角色,具有插入、删除和更改数据库中用户数据的权限 参考答案为D

解析:角色分为服务器级角色和数据库级角色。db_datawriter角色属于数据库级角色,具有插入、删除和更改数据库中所有用户数据的权限。

20.下列关于存储过程的说法,正确的是 A、使用存储过程会降低数据操作效率 B、存储过程是存储在数据库服务器端的可以被调用执行的代码 C、存储过程是存储在客户端应用程序中的可以被调用执行的代码 D、使用存储过程只能实现数据查询操作 参考答案为B

解析:存储过程的好处是允许模块化程序设计、改善性能、减少网络流量、增强应用程序的安全性,故A错。 所谓存储过程,实际上是存储在数据库中供用户程序调用的子程序,故B对C错。 存储过程是程序,可实现但不限于数据查询。D错。

21.设在SQLServer中有如下定义触发器的语句: CREATE TRIGGER tri_1 ON T1 FOR INSERT,DELETE AS …… 下列关于该触发器作用的说法,正确的是 A、该触发器定义有误,不能定义一个由多个操作引发执行的前触发型触发器 B、在T1表上定义了一个由插入或删除操作引发的前触发型触发器 C、该触发器定义有误,不能定义一个由多个操作引发执行的后触发型触发器 D、在T1表上定义了一个由插入或删除操作引发的后触发型触发器 参考答案为D

解析:由触发器的语法可知,语句语法无误,AC错。由于题中有FOR,FOR和AFTER定义的是后触发型触发器,故答案为D。

22.下列关于触发器的说法,正确的是 A、触发器主要用于防止非法用户访问 B、利用触发器可以实施业务规则 C、利用触发器可以提高数据查询性能 D、利用触发器可以提高数据更改性能 参考答案为B

解析:考察 触发器的基本概念 触发器通常用于保证业务规则和数据完整性。 故本题答案为B。

23.设在SQL Server 2008中,要定义一个有两个输入参数a和b、一个输出参数c的存储过程,a、b、c均为整型,a的默认值为100。下列关于定义存储过程的接口正确的是 A、CREATE PROC P1 @a int = 100, @b int,@c int output B、CREATE PROC P1 @a int default 100, @b int,@c int output C、CREATE PROC P1 @a =100 int,@b int,@c int output D、CREATE PROC P1 @a default 100 int,@b int,output @c int 参考答案为A

解析:考察 创建存储过程 创建存储过程的语法如下: CREATE PROC 存储过程名 @存储过程参数1 存储过程参数1的类型,@存储过程参数2,存储过程参数2的类型, @存储过程参数3,存储过程参数3的类型…… 其中,如果定义了default值,则在调用存储过程是可以不指定此参数的值。OUTPUT标识该参数为输出参数。 故本题答案为A。

24.下列关于触发器的说法,错误的是 A、后触发型触发器是先执行引发触发器的操作,再执行触发器自身的操作 B、前触发型触发器是只执行触发器自身的操作,而忽略引发触发器的操作 C、引发触发器执行的操作是增、删、改、查 D、利用触发器可以实现复杂的完整性约束 参考答案为C

解析:触发器是在对表中数据进行UPDATE、INSERT、DELETE操作时自动触发的。

25.设在8D Sewer 208中,要定义一个有两个输入参数a和b、一个输出参数ec的存储过程,a的类型为宁符类型。b、c为整型,a的默认值为好’”,下列定义该存储过程的接口语句正确的是 A、CREATE PROC P1 @a char(10)='好’,@b int,output @c int B、CREATE PROC P1 @a char(10) default '好’,@b int,output @c int C、CREATE PROC P1 @a char(10)=’好’,@b int,@c int output D、CREATE PROC P1 @a char(10) default '好’,@b int,@c int output 参考答案为C

解析:创建存储过程的语法如下: CREATE PROC 存储过程名 @存储过程参数1 存储过程参数1的类型,@存储过程参数2 存储过程参数2的类型, @存储过程参数3 存储过程参数3的类型…… 其中,如果定义了default值,则在调用存储过程时可以不指定此参数的值。OUTPUT标识该参数为输出参数。

26.在SQL Server 2008中,下列关于触发器的说法,正确的是 A、对于UPDATE操作,触发器将生成UPDATED临时表 B、触发器可以提高数据的更改效率 C、触发器可以实现不同表中的列之间的相互取值约束 D、INSERTED临时表只能由INSERT操作引发的触发器生 参考答案为C

解析:如果不同表中的列存在取值约束关系,则只能用触发器实现,不能用CHECK约束实现(CHECK约束只能实现一个表中列之间的取值约束)。 故本题答案为C。

27.设在SQLServer 2008中,要定义一个有一个输入参数a和两个输出参数b、c的存储过程,a、b、c均为整型。下列定义该存储过程的接口正确的是 A、CREATE PROC P1 @a int,@b int output,@c int output B、CREATE PROC P1 @a int input,@b int output,@c int output C、CREATE PROC P1 input @a int,output @b int,output @c int D、CREATE PROC P1 @a int,output @b int,output @c int 参考答案为A

解析:存储过程语法: CREATE PROC|PROCEDURE procdure_name [{@paramater data_type}] [default][OUT|OUTPUT] ][,…n][WITH RECOMPILE] AS {<sql_statement>[;][…n]} [;] <sql_statement>::={[BEGIN] statements [END]} 通过创建存储过程的语法可知,如果是输出参数需要在变量名后标记"output",输入参数不需要标记。 由此可知应选A。

28.下列在T表的DELETES作上建立后触发型触发器的语句开始部分,正确的是 A、CREATE TRIGGER tri_T_Del ON T FOR delete AS… B、CREATE TRIGGER tri_T_Del FOR delete ON T AS… C、CREATETRIGGER tri_T_Del ON T BEHIND delete AS… D、CREATE TRIGGER tri_T_Del BEHIND delete ON T AS.. . 参考答案为A

解析: 由创建触发器的语法可知,触发器名称后应紧跟ON,所以BD错误。由于题目要求建立后触发型触发器,所以需要使用for或after短语。故选A。

29.下列关于存储过程的说法,错误的是 A、存储过程的输出参数必须使用OUTPUT关键词标识 B、在定义存储过程的语句中,只可以包含数据查询语句 C、在定义存储过程的语句中,可以包含增、删、改、查语句 D、存储过程可以有多个输入参数和多个输出参数 参考答案为B

解析:存储过程可以用于更改数据和删除数据。