数据库系统原理例题之——数据库编程

发布时间:2023年12月29日

第五章 数据库编程

【例题】

一 、单选题

42.使用存储过程有很多好处 ,其中不包括( )
A. 良好的封装性
B.可增强 SQL 语言功能和灵活性
C.可减少网络流量
D.可简化查询语句

43.对于存储过程和存储函数的说法错误的是( )
A.存储函数能拥有输出函数
B.调用存储过程需要使用 CALL 语句
C.存储函数必须包含一条 RETURN 语句
D.可以直接对存储函数进行调用

二 、填空题

44.创建存储过程时,将MySQL结束符修改为两个感叹号“ !! ”的 SQL 语句是 _________。

45.在存储过程中 ,用于为局部变量指定一个默认值的子句是_________。

46.局部变量只能在存储过程体的_________语句块中声明 。

47.在 MySQL 中 ,给局部变量赋值的语句是 ___________ 。

48.在 MySQL 中 ,把选定列的值直接存储到局部变量中的语句是___________ 。

三 、简答题

49.简述在存储过程中局部变量与用户变量的区别 。

50.简述在 MySQL 中使用游标的具体步骤 。

【答案&解析】

一、单选题

42.【考点】存储过程的基本概念
答案: D
解析:使用存储过程的好处如下所示:
( 1 )可增强 SQL 语言的功能和灵活性 。
( 2 )良好的封装性 。
( 3 )高性能 。
( 4 )可减少网络流量 。
( 5 )存储过程可作为一种安全机制来确保数据库的安全性和数据的完整性 。
本题为选非题 ,故选 D。

43.【考点】存储函数
答案:A
解析:存储函数和存储过程的区别:
( 1 )存储函数:不能拥有输出参数; 可以直接对存储函数进行调用; 必须包含一条 RETURN 语句。
( 2 )存储过程: 可以拥有输出参数; 需要使用 CALL 语句对存储过程调用;不允许包含 RETURN 语句。
故 BCD 均正确 ,A 项为干扰项 ,存储函数不能拥有输出参数 ,没有输出函数这类说法 。答案为 A。

二、填空题

44.【考点】创建存储过程
答案: DELIMITER !!
解析:将 MYSQL 结束符修改为两个感叹号“!! ”的 SQL 语句是“ DELIMITER !!” ,成功执行这条 SQL 语 句后任何命令、语句或程序的结束标志就换为两个感叹号“ !!” 了。

45.【考点】局部变量
答案: DEFAULT
解析:在存储过程体中可以声明局部变量 ,用来存储存储过程体中的临时结果。
DEFAULT 子句用于为局部变量指定一个默认值,若没有指定 ,则默认为 NULL 。【拓展】存储过程是一组 为了完成某项特定功能的 SQL 语句集 ,其实质上就是一段存储在数据库中的代码 ,它可以由声明式的 SQL 语句和过程式SQL 语句组成。

46.【考点】局部变量
答案: BEGIN … END
解析: 声明局部变量的注意事项:
( 1 )局部变量只能在存储过程体的 BEGIN … END 语句块中声明。
( 2 )局部变量必须在存储过程体的开头处声明。
( 3 )局部变量的作用范围仅限于声明它的 BEGIN … END 语句块 ,其他语句块中的语句不可以使用它。
47.【考点】SET 语句
答案:SET
解析: 题目考查赋值 。在 MySQL 中 ,使用 SET 语句为局部变量赋值 ,语法格式:

 SET var_name=expr[, var_name=expr]

可以使用 DECLARE 语句声明局部变量。

48.【考点】SELECT … INTO 语句
答案:SELECT … INTO
解析:存储过程体中的关键字:
( 1 )声明局部变量: DECLARE
( 2 )为局部变量赋值:SET
( 3 )把选定列的值直接存储到局部变量中: SELECT … INTO

三、简答题

49.【考点】局部变量
答案: 两者的区别是:局部变量声明时 ,在其前面没有使用@符号 ,并且它只能被声明它的 BEGIN … END 语句块中的语句所使用; 而用户变量在声明时 ,会在其名称前面使用@符号 , 同时已声明的用户变量存在 于整个会话之中。
解析:局部变量不同于用户变量 , 两者的区别:
( 1 )局部变量声明: 其前面没有使用@符号 ,并且它只能被声明它的 BEGIN … END 语句块中的语句所使 用。
( 2 )用户变量声明:会在其名称前面使用@符号 , 同时已声明的用户变量存在于整个会话之中。

50.【考点】游标
答案: (1)声明游标(2)打开游标(3)读取数据(4)关闭游标
解析:在 MySQL 中使用游标的具体步骤可以从以下四方面来记忆:
( 1 )声明( 2 )打开( 3 )读取( 4 )关闭

【延伸知识点】

1.对于存储过程下列说法错误的是( )
A.是存储在数据库中的代码
B.是为了完成某项特定功能的 SQL 语句集
C.可随时被调用并执行
D.每次被调用前必须重新编译

2.存储过程体中的_________语句返回的结果集只能有一行数据。

3.MySQL 中为防止因删除不存在的存储过程而引发错误 ,可在 DROP PROCEDURE 语句中添加关键字__________ 。

4.在 MySQL 中 ,可以使用 CREATE FUNCTION 语句创建________ 。

5.简述使用游标的注意事项。

【延伸知识点答案&解析】

1.答案: D
解析:
存储过程是一组为了完成某项特定功能的 SQL 语句集 ,其实质上就是一段存储在数据库中的代码 ,它可以 由声明式的 SQL 语句和过程式SQL 语句组成 。
故 AB 正确。
这组语句集经过编译后会存储在数据库中 ,用户只需通过指定储过程的名字并给定参数 , 即可随时调用并 执行它 , 而不必重新编译 , 因此这种通过定义一段程序存储在数据库中的方式 ,可加大数据库操作语句的 执行效率 。
故 C 正确 ,D 错误。

2.答案:SELECT … INTO
解析:
在 MySQL 中,可以使用 SELECT … INTO 语句把选定列的值直接存储到局部变量中,其使用的语法格式是:

SELECT col_name[,]INTO var_name[,] table_expr

需要注意的是:存储过程体中的SELECT … INTO 语句返回的结果集只能有一行数据。

3.答案: IF EXISTS
解析:
删除存储过程的语法格式:
DROP PROCEDURE[IF EXISTS]sp_name
( 1 )语法项“sp_name” :用于指定要删除的存储过程的名称。
( 2 )关键字“ IF EXISTS ”: 防止因删除不存在的存储过程而引发的错误。

4.答案:存储函数
解析:

破题点:本题可从“CREATE FUNCTION”入手。

解释存储函数存储过程
创建CREATE FUNCTIONCREATE PROCEDURE
调用SELECTCALL
删除DROP FUNCTIONDROP PROCEDURE

5.答案:
( 1 )游标只能用于存储过程或存储函数中 ,不能单独在查询操作中使用。
( 2 )在存储过程或存储函数中可以定义多个游标 ,但是在一个 BEGIN … END 语句块中每一个游标的名字 必须是唯一的。
( 3 )游标不是一条 SELECT 语句 ,是被 SELECT 语句检索出来的结果集。
解析:
在使用游标的过程中 , 需要注意 3 点:
1 )不能在查询中单独使用;
2 )可定义多个 ,但名字必须唯一 ;
3 ) 是结果集。

文章来源:https://blog.csdn.net/run__ning/article/details/135227508
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。