专题十 触发器、事件和事件调度器(课件)-《数据库原理与应用技术》高考备考讲练测(河北省)

2025-04-07
| 37页
| 180人阅读
| 0人下载
精品

内容正文:

专题十 触发器、事件 数据库原理与应用技术-MySQL 专题复习讲练测 河北科学技术出版社 掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。 考纲要求 一 (八) MySQL的数据库编程 1.掌握触发器的基本概念与作用,掌握使用SQL语句创建、删除触发器的操作方法及应用,掌握触发器的种类及区别,理解触发器的使用及原则; 2.掌握事件、事件调度器的基本概念与作用,掌握使用SQL语句创建、修改、删除事件的操作方法及应用; 知识点梳理 二 触发器 触发器(TRIGGER)是一种用于保障数据完整性的机制,供程序员和数据分析员使用。 ➽是与表事件相关的特殊存储过程。 ➽其执行不由程序调用,而是由诸如对表进行 INSERT、DELETE、UPDATE 等操作这类事件触发。 知识点梳理 二 触发器作用 可在写入数据表前,强制检验或转换数据。 触发器发生错误时,异动的结果会被撤销 部分数据库管理系统可以针对数据定义语言 (DDL) 使用触发器,称为DDL触发器。 可依照特定的情况,替换异动的指令 知识点梳理 二 触发器优点 自动执行 01 级联更新 03 强化约束 05 02 跟踪变化 04 强制业务逻辑 知识点梳理 二 触发器缺点 触发频率高,占用内存,降低数据访问速度。 相对不灵活,一旦触发马上执行,不能排除特殊情况。 过度使用也会造成数据库的维护困难。 知识点梳理 二 触发器使用原则 触发器仅适用于表级事件,不适用于行级事件。 01 触发器的执行语句必须具有原子性,不能包含多个 SQL 语句 。 03 触发器执行效率较低,应尽量避免过度使用。 05 02 触发器不支持嵌套使用。 04 触发器执行语句不能对自身所针对的表进行修改操作,防止出现死循环。 知识点梳理 二 创建触发器 触发器创建语法四要素 ➽触发地点 (TABLE) ➽触发事件 (INSERT/UPDATE/DELETE) ➽触发时间 (AFTER/BEFORE) ➽触发器程序体 (BEGIN…END) 每个表的每个事件每次只允许一个触发器。 每个表最多支持6种触发器,即 BEFORE INSERT 、BEFORE UPDATE 、BEFORE DELETE 、AFTER INSERT 、AFTER UPDATE 、AFTER DELETE。 知识点梳理 二 创建触发器 CREATE TRIGGER语句 ➽CREATE TRIGGER<触发器名><BEFORE|AFTER> <INSERT|UPDATE |DELETE> ON <表名>FOR EACH ROW <触发器主体> 知识点梳理 二 创建触发器 CREATE TRIGGER语句 CREATE TRIGGER <触发器名>:开始创建触发器,<触发器名> 要在数据库里唯一,命名应反映功能,如 before_insert_orders。 <BEFORE|AFTER>:指定执行时机。BEFORE 是事件执行前执行,可用于数据验证;AFTER 是事件执行后执行,常用于记录日志。 <INSERT|UPDATE |DELETE>:指定触发事件类型,分别对应插入、更新、删除操作。 ON <表名>:指定触发器关联的表,该表发生指定事件时,触发器才激活。 FOR EACH ROW:表示触发器针对每行受影响的数据执行。 <触发器主体>:是触发器执行的具体操作,可含一条或多条 SQL 语句。可使用 NEW(INSERT 和 UPDATE 时代表新数据)和 OLD(UPDATE 和 DELETE 时代表旧数据)关键字引用数据。 知识点梳理 二 查看触发器 查看当前数据库的所有触发器 ➽SHOW TRIGGERS 查看当前数据库的某个触发器 ➽SHOW CREATE TRIGGER 触发器名 查看TRIGGERS数据表中的触发器信息 ➽SELECT*FROM information_schema.TRIGGERS 知识点梳理 二 删除触发器 DROP TRIGGER命令 ➽DROP TRIGGER 触发器名 知识点梳理 二 事件 事件是 MySQL 数据库提供的一种定时执行机制,它允许用户预先定义在特定时间点或按照一定时间间隔执行特定的 SQL 语句或存储过程。事件调度器(Event Scheduler)是 MySQL 服务器的一个组件,负责管理和执行这些事件。通过事件,用户可以实现诸如数据备份、数据清理、统计数据更新等定时任务,而无需手动干预。 知识点梳理 二 事件优缺点 自动化执行 提高数据处理效率 增强系统稳定性 资源消耗 不可以调用 知识点梳理 二 事件调度 事件由一个特定的线程来管理。 启用事件调度器后,拥有SUPER 权限的账户执行 SHOW PROCESSLIST可以看到该线程。 ➽事件调度核心参数:event_scheduler。 知识点梳理 二 查询事件调度状态 ➽SHOW VARIABLES LIKE'event_scheduler'; ➽SELECT @@event_scheduler; ➽SHOW processlist; 知识点梳理 二 开关事件调度 该配置只是临时生效,重启后失效。 ① SET GLOBAL event_scheduler=ON; ②SET @@global.event_scheduler=ON; ③ SET GLOBAL event_scheduler=1; ④SET @@global.event_scheduler=1; (1)开启事件调度(临时) 该配置只是临时生效,重启后失效。 ①SET GLOBAL event_scheduler=OFF; ② SET @@global.event_scheduler=OFF; ③ SET GLOBAL event_scheduler=0; ④SET @@global.event_scheduler=0: (2)关闭事件调度(临时) 要想永久生效需要在配 置文件 (my.ini) 中配置参数。 ① event_scheduler=1# 开启事件; ② event_scheduler=0# 关闭事件。 (3)开关事件调度(永久) 知识点梳理 二 创建事件 ➽CREATE EVEVT [IF NOT EXISTS] <事件名> ON SCHEDULE <时间表> [ON COMPLETION [NOT]PRESERVE] [ENABLE |DISABLE] [COMMENT 'comment'] DO <事件主体> 知识点梳理 二 创建事件 ➽ CREATE EVENT [IF NOT EXISTS] <事件名>:创建事件,IF NOT EXISTS 可选,若事件已存在则不报错。<事件名> 要在数据库中唯一。 ON SCHEDULE <时间表>:指定事件执行时间,有一次性执行(用 AT 指定时间点)和周期性执行(用 EVERY 指定间隔,可结合 STARTS 和 ENDS)两种方式。 [ON COMPLETION [NOT] PRESERVE]:可选。PRESERVE 表示事件执行完保留定义,NOT PRESERVE(默认)则删除。 [ENABLE | DISABLE]:可选。ENABLE 让事件默认启用,按时间表执行;DISABLE 则默认禁用。 [COMMENT 'comment']:可选。添加注释说明事件功能等。 DO <事件主体>:定义事件执行的 SQL 语句或存储过程。 知识点梳理 二 创建事件 知识点梳理 二 查询事件 ➽查询系统中所有的事件 SHOW EVENTS ➽查询特定事件的详情 SHOW CREATE EVENT < 事件名 > 知识点梳理 二 启动与关闭事件 ➽启动事件 ALTER EVENT 事件名 ENABLE ➽关闭事件 ALTER EVENT 事件名 DISABLE 知识点梳理 二 修改事件 ➽修改事件语法 ALTER EVENT < 事件名 > ON SCHEDULE < 时间表 > [ON COMPLETION [NOT]PRESERVE] [ENABLE|DISABLE] [COMMENT 'comment'] DO <事件主体> ➽删除事件 DROP EVENT [IF EXISTS] < 事件名 > 限时练习 三 1.关于 MySQL 触发器,以下说法正确的是( ) A. 触发器可以针对行级事件 B. 触发器可以嵌套使用 C. 触发器的执行语句必须是原子性的 D. 触发器可以对自身所针对的表进行修改操作 答案:C 限时练习 三 2.一个表最多支持多少种触发器( ) A. 3 种 B. 4 种 C. 5 种 D. 6 种 答案:D 限时练习 三 3.查看当前数据库某个触发器定义的语句是( ) A. SHOW TRIGGERS B. SHOW CREATE TRIGGER 触发器名 C. SELECT * FROM information_schema.TRIGGERS D. SHOW TABLE STATUS LIKE ' 触发器名 ' 答案:B 限时练习 三 4.在 MySQL 中,事件调度器默认是( ) A. 开启的 B. 关闭的 C. 不确定 D. 根据数据库版本而定 答案:B 限时练习 三 5.创建事件时,若希望事件执行完成后保留事件定义,应使用以下哪个参数( ) A. ON COMPLETION PRESERVE B. ON COMPLETION NOT PRESERVE C. ENABLE D. DISABLE 答案:A 答案:A 限时练习 三 6.触发器可以在对表进行数据定义语言(DDL)操作时触发。( ) 答案:× 7.可以使用 DROP EVENT 语句删除事件,使用 DROP TRIGGER 语句删除触发器。( ) 答案:√ 限时练习 三 8.事件的执行是由程序调用触发的。( ) 答案:× 9.创建事件时,时间表中使用 AT 关键字可以完成重复的计划任务。( ) 答案:× 限时练习 三 10.创建一个名为before_insert_trigger的触发器,在向students表插入数据之前,检查插入的age值是否大于 0,若不大于 0 则抛出错误,写出创建该触发器的 SQL 语句。 限时练习 三 答案: DELIMITER // CREATE TRIGGER before_insert_trigger BEFORE INSERT ON students FOR EACH ROW BEGIN IF NEW.age <= 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '年龄必须大于0'; END IF; END // DELIMITER ; 限时练习 三 11.查看当前数据库中所有触发器的信息,写出对应的 SQL 语句。 答案: SHOW TRIGGERS; 限时练习 三 12.创建一个名为backup_event的事件,使其在 2024 年 11 月 1 日凌晨 3 点执行一次,执行内容为调用名为backup_database的存储过程,写出创建该事件的 SQL 语句。 限时练习 三 答案: CREATE EVENT IF NOT EXISTS backup_event ON SCHEDULE AT '2024-11-01 03:00:00' ON COMPLETION NOT PRESERVE ENABLE COMMENT '2024年11月1日凌晨3点执行数据库备份事件' DO CALL backup_database(); 限时练习 三 13.关闭名为my_event的事件,写出对应的 SQL 语句。 答案: ALTER EVENT my_event DISABLE; 谢谢 $$

资源预览图

专题十 触发器、事件和事件调度器(课件)-《数据库原理与应用技术》高考备考讲练测(河北省)
1
专题十 触发器、事件和事件调度器(课件)-《数据库原理与应用技术》高考备考讲练测(河北省)
2
专题十 触发器、事件和事件调度器(课件)-《数据库原理与应用技术》高考备考讲练测(河北省)
3
专题十 触发器、事件和事件调度器(课件)-《数据库原理与应用技术》高考备考讲练测(河北省)
4
专题十 触发器、事件和事件调度器(课件)-《数据库原理与应用技术》高考备考讲练测(河北省)
5
专题十 触发器、事件和事件调度器(课件)-《数据库原理与应用技术》高考备考讲练测(河北省)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。