内容正文:
《数据库原理与应用技术-MySQL》河北科学技术出版社
第九章 MySQL数据库编程
考试时间:90分钟 满分:100分
姓名 班级 学号
1. 单项选择题(本题共25小题,每题2分,共50分)
1、下列选项中,哪一项不是触发器的事件( )。
A.INSERT B.UPDATE
C. CREATE D.DELETE
【答案】C
【解析】触发器的事件有3个,分别是INSERT,DELETE,INSERT。
2、关于触发器的使用原则,下列说法正确的是( )
A.触发器可以嵌套使用 B.触发器的执行效率高
C.触发器的执行语句必须是原子性的 D.触发器可以包含多个SQL语句
【答案】C
【解析】触发器不能嵌套使用,执行效率低,不能包含多个SQL语句,执行语句必须是原子性的。
3、下列选项中,( )关键字是在更改表中某一行数据时激活的触发器。
A.INSERT B.UPDATE
C. CREATE D.DELETE
【答案】B
【解析】UPDATE是更新触发器的关键字。
4、关于触发器的优点,下列说法不正确的是( )。
A. 自动执行 B. 级联更新
C. 相对不灵活 D. 强化约束
【答案】C
【解析】相对不灵活,一旦触发马上执行,是触发器的缺点,而不是优点
5、定义触发器的目的是为了( )
A. 提高数据查询速度 B.加强数据安全性
C. 加强数据共享性 D.保证表间数据完整性
【答案】D
【解析】定义触发器可以保证数据的完整性。
6、关于事件的描述,下列说法不正确的是( )
A.事件是MySQL在相应的时刻调用的过程式数据对象
B.事件与触发器不同,事件称为临时性触发器
C.事件可以调用一次,也可以周期性地启动
D.事件由一个特定的线程来管理
【答案】B
【解析】事件与触发器类似,称为临时性触发器。
7、下列选项中,用于创建事件的命令是( )。
A.CREATE TABLE B.CREATE EVENT
C.CREATE TRIGGER D.CREATE VIEW
【答案】B
【解析】CREATE EVENT 命令用于创建事件
8、下面的代码用于创建一个在删除数据前触发的触发器,横线上所缺代码为( )。
CREATE TRIGGER bookinfo_deleted_ ON tb_bookinfo FOR EACH ROW
INSERT INTO tb_booklog (event,logtime) values('删除了一条图书信息',now());
A. BEFORE DELETE B. AFTER DELETE
C. BEFORE INSERT D. AFTER INSERT
【答案】A
【解析】创建一个在删除数据前触发的触发器应该是:BEFORE DELETE
9.可临时关闭事件e_test的SQL语句为( )。
A. ALTER EVENT e_test ENABLE B. ALTER EVENT e_test DISABLE
C. ALTER EVENT e_test DROP D. ALTER EVENT e_test DELETE
【答案】B
【解析】临时关闭事件的语句是:ALTER EVENT 事件名 DISABLE;,故选B。
10、触发器可以创建在( )中。
A.表 B.过程 C.数据过程 D.函数发器。
【答案】A
【解析】触发器是建在永久表上的,故选择A。
11、在INSERT触发器中,可以使用( )引用。
A.OLD. B.NEW.
C.OLD.和NEW. D.OLD()和NEW()
【答案】B
【解析】在INSERT触发器中,可以使用NEW.列名来引用。
12、执行下列( )语句,不能查看触发器的信息。
A.SELECT*FROM triggers; B. SHOW TRIGGERS;
C.SHOW CREATE TRIGGER<触发器名>; D.SELECT*FROM information_schema.triggers;
【答案】A
【解析】B项可以查看所有触发器信息,C项可以查看触发器的定义信息D项从表中TRIGGERS表中查看触发器,应为triggers表在Information_schema系统数据库中,需要注明所属数据库,故A错误。
13、MySQL 中的事件是在相应的时刻调用的过程式数据库对象,以下说法错误的是( )。
A.事件可以调用一次,也可以周期性的启动
B.事件由一个特定的线程来管理,称为“事件调度器”
C.事件依赖于外部程序,来定时对数据进行操作
D.事件与触发器相似,也称为临时性触发器
【答案】C
【解析】事件不再依赖于外部程序,MySQL的事件调度器,可以精确到每秒中执行的任务。
14、MySQL事件中这个参数'event_scheduler'设置不能表示临时开启的( )。
A.SET GLOBAL event_scheduler=ON; B. SET @@global.event_scheduler=ON;
C.SET GLOBAL event_scheduler=1; D.SET @@global.event_scheduler=0;
【答案】D
【解析】表示临时开启时,EVENT_SCHEDULER的值时ON或1,故选D。
15、关于MySQL事件和事件调度器,以下哪个说法是正确的?( )
A.事件调度器只能执行一次事件
B.事件调度器由操作系统的计划任务来管理
C.可以通过SHOW EVENTS语句查看所有事件
D.事件调度器在MySQL服务器启动时默认启用
【答案】C
【解析】A项错误,事件调度器可以执行一次,也周期性启动。B项错误,事件由MySQL事件调度器来管理,D项事件调度器默认时关闭的。
16、在存储过程中,哪个语句用于退出循环?( )
A. LEAVE B. BREAK C.EXIT D.CONTINUE
【答案】A
【解析】在存储过程中,LEAVE用于退出循环,故选A。
17、在存储过程中,可以使用哪种类型的循环?( )
A.FOR B.WHILE C. REPEAT...UNTIL D.B and C
【答案】D
【解析】在存储过程中,循环包括:LOOP 、REPEAT...UNTIL、WHILE。
18、在MySQL中,如何查看存储过程的定义?( )
A.SHOW CREATE PROCEDURE B. DESCRIBE PROCEDURE
C.EXPLAIN PROCEDURE D.VIEW PROCEDURE
【答案】A
【解析】SHOW CREATE PROCEDURE 可以查看存储过程的定义,故选C。
19、如何修改一个已存在的存储过程的主体和参数?( )
A.使用ALTER PROCEDURE语句 B.先删除后重新创建
C.直接在原有存储过程上编辑 D.使用UPDATE PROCEDURE语句
【答案】A
【解析】修改存储过程使用ALTER PROCEDURE
20、存储过程和函数的定义存放在( )数据库中。
A.Performance_schema B.Information_schema
C.MySQL D.XSCJ
【答案】C
【解析】存储过程和函数存放在mysql的系统数据库中。
二、填空题(本题共10小题,每题2分,共20分)
1、创建触发器使用的关键命令是 。
【答案】CREATE TRIGGERS
2、查看当前数据库的所有触发器的命令为 ___________。
【答案】SHOW TRIGGERS
3、在创建触发器的命令中,________关键字指行级触发,每一行都要激活触发器的动作。【答案】FOR EACH ROW
4、如果要从数据库中删除触发器,应该使用SQL语言的命令: 。
【答案】DROP TRIGGER
5、每个表的每个事件每次只允许创建一个触发器,因此每个表最多支持________种触发器。
【答案】六
6、在MySQL中,用 定义存储过程
【答案】CREATE PROCEDURE
7、存储过程名为“my_procedure”的,调用存储过程的命令:
【答案】CALL my_procedure( );
9、在存储过程中,声明变量的关键字是 。
【答案】DECLARE
10、要获取存储函数的定义,可以使用 命令。
【答案】唯一
3、 判断题(本题共10小题,每题2分,共20分)
1、在Update触发器中,可以使用NEW.列名和OLD.列名来引用。( )
【答案】正确。在Update触发器中,可以使用NEW.列名和OLD.列名来引用。
2、事件只能在存储过程中定义和调用。( )
【答案】错误。事件时根据调度事件来启动的,而不是只能在存储过程中定义和调用的。
3、DROP EVENT语句用于删除不再需要的事件。( )
【答案】正确。DROP EVENT就是专门用来删除已创建和不再需要的事件。
4、事件的定义中必须包含STARTS和ENDS子句来指定事件的有效期。( )
【答案】错误。在数据库事件定义里,STARTS(指定开始时间)和 ENDS(指定结束时间 )子句是可选的,不是必须包含,事件可按需灵活设置是否用它们界定有效期,所以该说法错误。
5、存储过程是一组为了完成特定任务而预先编写的SQL语句集合。( )
【答案】正确。存储过程的含义是一组为了完成特定任务而预先编写的SQL语句集。
6、OUT类型的参数在存储过程执行后不会有值。( )
【答案】错误。OUT类型参数就是用于在存储过程执行后向外传值,执行后有值。
7、使用存储过程可以减少网络流量,因为多个SQL语句可以一次性发送到服务
器执行。( )
【答案】正确。储过程把多SQL语句打包,一次网络调用就能执行,减少通信次数,降低流量 。
8、如果存储函数没有明确的返回值类型,MySQL会默认其返回类型为整型。( )
【答案】错误。存储函数没有明确的返回值类型,MySQL会默认其返回类型为字符类型。
9、存储函数可以在SQL语句中直接使用,就像内置函数一样。( )
【答案】正确。存储函数可像内置函数(如SUM)一样,直接用在SQL语句(如 SELECT 语句 )里参与运算、查询。
10、在MySQL中,存储函数不能包含输出参数。( )
【答案】正确。MySQL存储函数设计上侧重返回单一值,不能定义输出参数,和存储过程有区别。
四、命令题(本大题共3小题,共8分)
1、在“books”表上创建一个触发器“books_trigger”,要求插入的图书的价格要小于30,如果插入图书的价格大于30,则在插入前将记录的“price”的字段值修改为30。(4分)
【答案】
CREATE TRIGGER books_trigger BEFORE INSERT ON books
FOR EACH ROW
BEGIN
IF new.price>30 THEN
SET new.price =30;
END IF ;
END
1. 查看当前数据库中books_trigger触发器信息。(2分)
【答案】
SHOW CREATE TRIGGER books_trigger
1. 删除触发器book_trigger。(2分)
【答案】
DROP TRIGGER books_trigger
五、程序填空(本大题共4空,每空3分,共12分)
使用传参调用方式创建存储过程param_pro,要求在调用时能够通过传入参 id删除成绩表中该学生的成绩,查询成绩中的最高分并输出,然后通过传人参数p_gra查询高于该值成绩总人数并通过p_gra输出。
创建程序如下:
CREATE ⑴ param_pro(IN id INT, OUT num INT, INOUT P_gra INT)
BEGIN
DELETE FROM score WHERE StuID = ⑵ ;
SELECT max(Grade) FROM score INTO ⑶ ;
SELECT count(*) INTO p_gra FROM score WHERE Grade >P_gra ;
END
调用程序如下:
SET @p_gra=85;
⑷ Param_pro(20250108,@num,@p_gra);
Select @num,@p_gra;
【答案】 (1) PROCEDURE (2)id (3)num (4)call
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
《数据库原理与应用技术-MySQL》河北科学技术出版社
第九章 MySQL数据库编程
考试时间:90分钟 满分:100分
姓名 班级 学号
1、 单项选择题(本题共20小题,每题2分,共40分)
1、下列选项中,哪一项不是触发器的事件( )。
A.INSERT B.UPDATE
C. CREATE D.DELETE
2、关于触发器的使用原则,下列说法正确的是( )
A.触发器可以嵌套使用 B.触发器的执行效率高
C.触发器的执行语句必须是原子性的 D.触发器可以包含多个SQL语句
3、下列选项中,( )关键字是在更改表中某一行数据时激活的触发器。
A.INSERT B.UPDATE
C. CREATE D.DELETE
4、关于触发器的优点,下列说法不正确的是( )。
A. 自动执行 B. 级联更新
C. 相对不灵活 D. 强化约束
5、定义触发器的目的是为了( )
A. 提高数据查询速度 B.加强数据安全性
C. 加强数据共享性 D.保证表间数据完整性
6、关于事件的描述,下列说法不正确的是( )
A.事件是MySQL在相应的时刻调用的过程式数据对象
B.事件与触发器不同,事件称为临时性触发器
C.事件可以调用一次,也可以周期性地启动
D.事件由一个特定的线程来管理
7、下列选项中,用于创建事件的命令是( )。
A.CREATE TABLE B.CREATE EVENT
C.CREATE TRIGGER D.CREATE VIEW
8、下面的代码用于创建一个在删除数据前触发的触发器,横线上所缺代码为( )。
CREATE TRIGGER bookinfo_deleted_ ON tb_bookinfo FOR EACH ROW
INSERT INTO tb_booklog (event,logtime) values('删除了一条图书信息',now());
A. BEFORE DELETE B. AFTER DELETE
C. BEFORE INSERT D. AFTER INSERT
9.可临时关闭事件e_test的SQL语句为( )。
A. ALTER EVENT e_test ENABLE B. ALTER EVENT e_test DISABLE
C. ALTER EVENT e_test DROP D. ALTER EVENT e_test DELETE
10、触发器可以创建在( )中。
A.表 B.过程 C.数据过程 D.函数发器。
11、在INSERT触发器中,可以使用( )引用。
A.OLD. B.NEW.
C.OLD.和NEW. D.OLD()和NEW()
12、执行下列( )语句,不能查看触发器的信息。
A.SELECT*FROM triggers; B. SHOW TRIGGERS;
C.SHOW CREATE TRIGGER<触发器名>; D.SELECT*FROM information_schema.triggers;
13、MySQL 中的事件是在相应的时刻调用的过程式数据库对象,以下说法错误的是( )。
A.事件可以调用一次,也可以周期性的启动
B.事件由一个特定的线程来管理,称为“事件调度器”
C.事件依赖于外部程序,来定时对数据进行操作
D.事件与触发器相似,也称为临时性触发器
14、MySQL事件中这个参数'event_scheduler'设置不能表示临时开启的。( )
A.SET GLOBAL event_scheduler=ON; B. SET @@global.event_scheduler=ON;
C.SET GLOBAL event_scheduler=1; D.SET @@global.event_scheduler=0;
15、关于MySQL事件和事件调度器,以下哪个说法是正确的?( )
A.事件调度器只能执行一次事件
B.事件调度器由操作系统的计划任务来管理
C.可以通过SHOW EVENTS语句查看所有事件
D.事件调度器在MySQL服务器启动时默认启用
16、在存储过程中,哪个语句用于退出循环?( )
A. LEAVE B. BREAK C.EXIT D.CONTINUE
17、在存储过程中,可以使用哪种类型的循环?( )
A.FOR B.WHILE C. REPEAT...UNTIL D.B and C
18、在MySQL中,如何查看存储过程的定义?( )
A.SHOW CREATE PROCEDURE B. DESCRIBE PROCEDURE
C.EXPLAIN PROCEDURE D.VIEW PROCEDURE
19、如何修改一个已存在的存储过程的主体和参数?( )
A.使用ALTER PROCEDURE语句 B.先删除后重新创建
C.直接在原有存储过程上编辑 D.使用UPDATE PROCEDURE语句
20、存储过程和函数的定义存放在( )数据库中。
A.Performance_schema B.Information_schema
C.MySQL D.XSCJ
二、填空题(本题共10小题,每题2分,共20分)
1、创建触发器使用的关键命令是 。
2、查看当前数据库的所有触发器的命令为 ___________。
3、在创建触发器的命令中,________关键字指行级触发,每一行都要激活触发器的动作。
4、如果要从数据库中删除触发器,应该使用SQL语言的命令: 。
5、每个表的每个事件每次只允许创建一个触发器,因此每个表最多支持________种触发器。
6、在MySQL中,用 定义存储过程
7、存储过程名为“my_procedure”的,调用存储过程的命令:
9、在存储过程中,声明变量的关键字是 。
10、要获取存储函数的定义,可以使用 命令。
三、判断题(本题共10小题,每题2分,共20分)
1、在Update触发器中,可以使用NEW.列名和OLD.列名来引用。( )
2、事件只能在存储过程中定义和调用。( )
3、DROP EVENT语句用于删除不再需要的事件。( )
4、事件的定义中必须包含STARTS和ENDS子句来指定事件的有效期。( )
5、存储过程是一组为了完成特定任务而预先编写的SQL语句集合。( )
6、OUT类型的参数在存储过程执行后不会有值。( )
7、使用存储过程可以减少网络流量,因为多个SQL语句可以一次性发送到服务
器执行。( )
8、如果存储函数没有明确的返回值类型,MySQL会默认其返回类型为整型。( )
9、存储函数可以在SQL语句中直接使用,就像内置函数一样。( )
10、在MySQL中,存储函数不能包含输出参数。( )
四、命令题(本大题共3小题,共8分)
1、已在“books”表上创建一个触发器“books_trigger”,要求插入的图书的价格要小于30,如果插入图书的价格大于30,则在插入前将记录的“price”的字段值修改为30。(4分)
2、查看当前数据库中books_trigger触发器信息。(2分)
3、删除触发器book_trigger。(2分)
五、程序填空(本大题共4空,每空3分,共12分)
使用传参调用方式创建存储过程param_pro,要求在调用时能够通过传入参 id删除成绩表中该学生的成绩,查询成绩中的最高分并输出,然后通过传人参数p_gra查询高于该值成绩总人数并通过p_gra输出。
创建程序如下:
CREATE ⑴ param_pro(IN id INT, OUT num INT, INOUT P_gra INT)
BEGIN
DELETE FROM score WHERE StuID = ⑵ ;
SELECT max(Grade) FROM score INTO ⑶ ;
SELECT count(*) INTO p_gra FROM score WHERE Grade >P_gra ;
END
调用程序如下:
SET @p_gra=85;
⑷ Param_pro(20250108,@num,@p_gra);
Select @num,@p_gra;
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$