第39卷 数据库原理与应用技术—触发器—河北省计算机类—考纲百套卷
|
2份
|
13页
|
46人阅读
|
0人下载
内容正文:
编写说明:河北省对口招生计算机类《考纲百套卷》,依据《河北省普通高等学校对口招生考试大纲(2028版专业课)计算机类》编写。本专辑涵盖9门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第39卷为专业核心模块训练卷,按《数据库原理与应用技术》中"数据库卷17——触发器"范围和要求编写。具体内容为:掌握触发器的基本概念与作用,掌握使用SQL语句创建、删除触发器的操作方法及应用,掌握触发器的种类及区别,理解触发器的使用及原则
河北省对口招生职业技能考试
数据库原理与应用技术 试卷
(数据库卷17——触发器)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. 在MySQL中,创建触发器的关键字是()
A.CREATE PROCEDURE B.CREATE FUNCTION C.CREATE TRIGGER D.CREATE EVENT
2. MySQL中,AFTER DELETE触发器在什么时候执行()
A.DELETE语句执行前 B.DELETE语句执行后 C.DELETE语句开始时 D.DELETE语句提交时
3. 在MySQL中,创建触发器时需要指定的关键要素不包括()
A.触发时机 B.触发事件 C.触发频率 D.触发体
4. MySQL触发器不支持以下哪种触发事件()
A.INSERT B.UPDATE C.SELECT D.DELETE
5. 在MySQL中,创建触发器前,需要确保事件调度器(Event Scheduler)是开启状态吗()
A.是 B.否 C.视情况而定 D.只有BEFORE触发器需要
6. 在MySQL中,删除触发器的正确语法是()
A.DELETE TRIGGER trigger_name B.DROP TRIGGER trigger_name C.REMOVE TRIGGER D.CANCEL TRIGGER
7. 下列关于触发器的叙述中,正确的是()
A. 触发器只能手动调用执行
B. 触发器是在表发生增删改时自动触发执行的特殊存储过程
C. 触发器不能关联数据表
D. 触发器创建后无法删除
8. MySQL 数据库中,触发器所属的核心对象是()
A. 数据库 B. 数据表 C. 存储程序 D. 索引文件
9. 在UPDATE触发器中,以下哪个修饰符可以访问列的旧值和新值()
A.OLD和NEW B.NEW和OLD C.OLD ONLY D.NEW ONLY
10. MySQL触发器默认的作用范围是()
A.语句级 B.行级 C.表级 D.数据库级
11. 在MySQL中,BEFORE触发器的主要用途是()
A.记录删除日志 B.在数据变化前进行验证或修改数据 C.统计操作次数 D.发送通知邮件
12. MySQL中,一个表上最多可以创建()个触发器
A.1 B.3 C.6 D.没有限制
13. 在MySQL中,触发器的主要作用是()
A.提高查询速度 B.在满足特定条件时自动执行特定操作 C.加密数据 D.备份数据
14. MySQL中,触发器体中不能包含哪类语句()
A.SELECT B.INSERT C.UPDATE D.STORE PROCEDURE
15. 在MySQL触发器中,NEW和OLD修饰符可以用于()
A.INSERT事件 B.UPDATE事件 C.DELETE事件 D.以上全部
16. MySQL触发器中,OLD修饰符引用的值()
A.可以修改 B.不可以修改 C.可以插入 D.可以删除
17. MySQL触发器可以响应的触发事件不包括()
A.INSERT B.DELETE C.UPDATE D.SELECT
18. MySQL触发器不能用于以下哪个操作()
A.INSERT INTO students VALUES(...) B.UPDATE students SET name='Tom' C.SELECT * FROM students D.DELETE FROM students WHERE id=1
19. 下列不属于触发器触发时机的是()
A. BEFORE INSERT B. AFTER UPDATE C. BEFORE DELETE D. BEFORE SELECT
20. MySQL触发器中,NEW修饰符引用的值()
A.不可以修改 B.可以修改(before触发器) C.可以删除 D.可以复制
二、填空题(共10空,每空1分,共10分)
21. MySQL中,创建触发器必须指定触发_____和触发事件。
22. MySQLAFTER触发器在事件发生_____执行。
23. MySQL中,创建触发器的关键字是_____。
24. MySQL触发器的行级触发器使用FOR EACH _____子句。
25. MySQL中,删除触发器的命令是DROP_____。
26. MySQL中,创建触发器必须指定的触发时机是BEFORE或_____。
27. 在UPDATE触发器中,OLD用于引用被更新前记录的_____字段值。
28. MySQL中,一个表上同一触发事件/时机最多创建_____个触发器。
29. 在MySQL触发器中,FOR EACH _____子句表示行级触发。
30. MySQL触发器中,INSERT事件使用_____关键字引用新记录。
三、判断题(共5题,每题1分,共5分)
31. MySQL触发器中,OLD修饰符可以引用INSERT事件的新记录。( )
32. MySQL触发器可以响应SELECT查询语句。( )
33. AFTER 类型触发器是在数据操作执行完成后才触发。( )
34. 一张数据表上可以创建多个同类型、同时机的触发器。( )
35. MySQL触发器默认是语句级触发器。( )
四、写命令题(共5题,每题9分,共45分)
36. 已知有学生表student(sno INT PRIMARY KEY, score INT),请写出删除触发器语句:当删除学生记录时,自动将score大于等于60的学生score字段设置为0。
37. 已知学生表 student(sid INT PRIMARY KEY, sname VARCHAR(30), score INT),请创建触发器:当修改学生成绩 score 时,自动把修改前的旧成绩备份到成绩日志表 score_log(sid INT, old_score INT, new_score INT) 中。
38. 已知有商品表product(pid INT PRIMARY KEY, pname VARCHAR(50), stock INT),请写出创建触发器的SQL:当向订单表orderlist(oid INT, pid INT, qty INT)中插入订单时,自动将对应商品的库存减少相应数量。
39. 已知有课程表course(cno VARCHAR(10) PRIMARY KEY, cname VARCHAR(50), credit INT, teacher VARCHAR(30))和学生选课表sc(sno VARCHAR(10), cno VARCHAR(10), grade INT),请写出SQL命令:查询选修了课程名为'数据库原理'的学生的学号和成绩,按成绩降序排列。
40. 已知有员工表emp(empno INT PRIMARY KEY, ename VARCHAR(30), sal DECIMAL(10,2), deptno INT),请写出SQL命令:分别查询各部门(按部门号分组)的最高工资和最低工资,以及获得最高工资的员工姓名。
学科网(北京)股份有限公司
$
编写说明:河北省对口招生计算机类《考纲百套卷》,依据《河北省普通高等学校对口招生考试大纲(2028版专业课)计算机类》编写。本专辑涵盖9门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第39卷为专业核心模块训练卷,按《数据库原理与应用技术》中"数据库卷17——触发器"范围和要求编写。具体内容为:掌握触发器的基本概念与作用,掌握使用SQL语句创建、删除触发器的操作方法及应用,掌握触发器的种类及区别,理解触发器的使用及原则
河北省对口招生职业技能考试
数据库原理与应用技术 试卷
(数据库卷17——触发器)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. 在MySQL中,创建触发器的关键字是()
A.CREATE PROCEDURE B.CREATE FUNCTION C.CREATE TRIGGER D.CREATE EVENT
【答案】C
【解析】使用CREATE TRIGGER语句创建触发器。
2. MySQL中,AFTER DELETE触发器在什么时候执行()
A.DELETE语句执行前 B.DELETE语句执行后 C.DELETE语句开始时 D.DELETE语句提交时
【答案】B
【解析】AFTER DELETE在DELETE操作完成后执行。
3. 在MySQL中,创建触发器时需要指定的关键要素不包括()
A.触发时机 B.触发事件 C.触发频率 D.触发体
【答案】C
【解析】创建触发器需要指定:触发时机(BEFORE/AFTER)、触发事件(INSERT/UPDATE/DELETE)、触发体,不需要指定频率。
4. MySQL触发器不支持以下哪种触发事件()
A.INSERT B.UPDATE C.SELECT D.DELETE
【答案】C
【解析】MySQL触发器只支持INSERT、UPDATE、DELETE三种行级事件,不支持SELECT。
5. 在MySQL中,创建触发器前,需要确保事件调度器(Event Scheduler)是开启状态吗()
A.是 B.否 C.视情况而定 D.只有BEFORE触发器需要
【答案】B
【解析】触发器与事件调度器是独立的功能,创建触发器不需要开启事件调度器。
6. 在MySQL中,删除触发器的正确语法是()
A.DELETE TRIGGER trigger_name B.DROP TRIGGER trigger_name C.REMOVE TRIGGER D.CANCEL TRIGGER
【答案】B
【解析】DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name 用于删除触发器。
7. 下列关于触发器的叙述中,正确的是()
A. 触发器只能手动调用执行
B. 触发器是在表发生增删改时自动触发执行的特殊存储过程
C. 触发器不能关联数据表
D. 触发器创建后无法删除
【答案】B
【解析】触发器无需手动调用,在表执行 INSERT、UPDATE、DELETE 时自动触发;它依附于数据表,且支持删除,只有 B 描述正确。
8. MySQL 数据库中,触发器所属的核心对象是()
A.数据库 B. 数据表 C. 存储程序 D. 索引文件
【答案】C
【解析】触发器与存储过程、函数一样,都属于数据库存储程序类对象。
9. 在UPDATE触发器中,以下哪个修饰符可以访问列的旧值和新值()
A.OLD和NEW B.NEW和OLD C.OLD ONLY D.NEW ONLY
【答案】A
【解析】UPDATE 触发器可同时使用 OLD 访问修改前旧值、NEW 访问修改后新值。
10. MySQL触发器默认的作用范围是()
A.语句级 B.行级 C.表级 D.数据库级
【答案】B
【解析】MySQL触发器默认是行级触发器(FOR EACH ROW子句是默认的)。
11. 在MySQL中,BEFORE触发器的主要用途是()
A.记录删除日志 B.在数据变化前进行验证或修改数据 C.统计操作次数 D.发送通知邮件
【答案】B
【解析】BEFORE触发器常用于在数据真正写入前进行合法性验证或数据预处理。
12. MySQL中,一个表上最多可以创建()个触发器
A.1 B.3 C.6 D.没有限制
【答案】C
【解析】MySQL一个表上同一触发事件/时机最多各一个触发器,即INSERT/UPDATE/DELETE × BEFORE/AFTER=6个。
13. 在MySQL中,触发器的主要作用是()
A.提高查询速度 B.在满足特定条件时自动执行特定操作 C.加密数据 D.备份数据
【答案】B
【解析】触发器是一种特殊存储过程,在满足触发条件时自动执行。
14. MySQL中,触发器体中不能包含哪类语句()
A.SELECT B.INSERT C.UPDATE D.STORE PROCEDURE
【答案】A
【解析】触发器内部不允许执行返回结果集的普通 SELECT 语句,可使用 INSERT、UPDATE 及调用存储过程。
15. 在MySQL触发器中,NEW和OLD修饰符可以用于()
A.INSERT事件 B.UPDATE事件 C.DELETE事件 D.以上全部
【答案】B
【解析】INSERT 只用 NEW,DELETE 只用 OLD,只有 UPDATE 事件可同时使用 NEW 和 OLD。16. MySQL触发器中,OLD修饰符引用的值()
A.可以修改 B.不可以修改 C.可以插入 D.可以删除
【答案】B
【解析】OLD修饰的值是只读的,不能在触发器中修改。
17. MySQL触发器可以响应的触发事件不包括()
A.INSERT B.DELETE C.UPDATE D.SELECT
【答案】D
【解析】MySQL触发器响应INSERT、UPDATE、DELETE三种事件,不响应SELECT。
18. MySQL触发器不能用于以下哪个操作()
A.INSERT INTO students VALUES(...) B.UPDATE students SET name='Tom' C.SELECT * FROM students D.DELETE FROM students WHERE id=1
【答案】C
【解析】SELECT不修改数据,触发器只响应INSERT/UPDATE/DELETE等数据修改操作。
19. 下列不属于触发器触发时机的是()
A. BEFORE INSERT B. AFTER UPDATE C. BEFORE DELETE D. BEFORE SELECT
【答案】D
【解析】MySQL 触发器仅支持INSERT、UPDATE、DELETE事件,SELECT 查询不能触发触发器,无 BEFORE SELECT 这类时机。
20. MySQL触发器中,NEW修饰符引用的值()
A.不可以修改 B.可以修改(before触发器) C.可以删除 D.可以复制
【答案】B
【解析】在BEFORE触发器中,可以通过SET NEW.col=value修改NEW的值。
二、填空题(共10空,每空1分,共10分)
21. MySQL中,创建触发器必须指定触发_____和触发事件。
【答案】时机
【解析】触发时机是BEFORE或AFTER,决定触发器执行时机。
22. MySQLAFTER触发器在事件发生_____执行。
【答案】后/之后
【解析】AFTER触发器在INSERT/UPDATE/DELETE事件完成后执行。
23. MySQL中,创建触发器的关键字是_____。
【答案】CREATE TRIGGER
【解析】CREATE TRIGGER用于在数据库中创建触发器对象。
24. MySQL触发器的行级触发器使用FOR EACH _____子句。
【答案】ROW
【解析】FOR EACH ROW表示对每一行数据变化执行触发器。
25. MySQL中,删除触发器的命令是DROP_____。
【答案】TRIGGER
【解析】DROP TRIGGER用于删除触发器。
26. MySQL中,创建触发器必须指定的触发时机是BEFORE或_____。
【答案】AFTER
【解析】BEFORE和AFTER是MySQL触发器的两种触发时机。
27. 在UPDATE触发器中,OLD用于引用被更新前记录的_____字段值。
【答案】旧
【解析】OLD修饰符访问旧记录的值。
28. MySQL中,一个表上同一触发事件/时机最多创建_____个触发器。
【答案】1
【解析】同一表上同一触发时机+事件只能有一个触发器。
29. 在MySQL触发器中,FOR EACH _____子句表示行级触发。
【答案】ROW
【解析】FOR EACH ROW表示对每一行数据变化执行一次触发器。
30. MySQL触发器中,INSERT事件使用_____关键字引用新记录。
【答案】NEW
【解析】NEW在INSERT触发器中引用新记录的值。
三、判断题(共5题,每题1分,共5分)
31. MySQL触发器中,OLD修饰符可以引用INSERT事件的新记录。( )
【答案】X
【解析】OLD用于UPDATE/DELETE中的旧值,NEW用于INSERT/UPDATE中的新值。
32. MySQL触发器可以响应SELECT查询语句。( )
【答案】X
【解析】触发器只响应INSERT、UPDATE、DELETE,不响应SELECT。
33.AFTER 类型触发器是在数据操作执行完成后才触发。( )
【答案】√
【解析】BEFORE 是操作执行前触发,AFTER 是数据表操作执行完成后触发。
34. 一张数据表上可以创建多个同类型、同时机的触发器。( )
【答案】X
【解析】MySQL 同一张表中,同一时机、同一事件只能创建一个触发器,不能重复创建。
35. MySQL触发器默认是语句级触发器。( )
【答案】X
【解析】MySQL默认是行级触发器(FOR EACH ROW)。
四、写命令题(共5题,每题9分,共45分)
36. 已知有学生表student(sno INT PRIMARY KEY, score INT),请写出删除触发器语句:当删除学生记录时,自动将score大于等于60的学生score字段设置为0。
【答案】
CREATE TRIGGER t_del_keep_score
BEFORE DELETE ON student
FOR EACH ROW
BEGIN
IF OLD.score >= 60 THEN
UPDATE student SET score = 0 WHERE sno = OLD.sno;
END IF;
END//
【解析】本题考DELETE触发器和OLD关键字,BEFORE触发器可在数据变化前干预。
37. 已知学生表 student(sid INT PRIMARY KEY, sname VARCHAR(30), score INT),请创建触发器:当修改学生成绩 score 时,自动把修改前的旧成绩备份到成绩日志表 score_log(sid INT, old_score INT, new_score INT) 中。
【答案】
DELIMITER //
CREATE TRIGGER tri_score_backup
AFTER UPDATE ON student
FOR EACH ROW
BEGIN
INSERT INTO score_log(sid, old_score, new_score)
VALUES(OLD.sid, OLD.score, NEW.score);
END //
DELIMITER ;
【解析】本题考查UPDATE 触发器、NEW 与 OLD 修饰符。在学生表更新后触发,通过 OLD 获取修改前旧成绩、NEW 获取修改后新成绩,插入日志表完成自动备份。
38. 已知有商品表product(pid INT PRIMARY KEY, pname VARCHAR(50), stock INT),请写出创建触发器的SQL:当向订单表orderlist(oid INT, pid INT, qty INT)中插入订单时,自动将对应商品的库存减少相应数量。
【答案】
CREATE TRIGGER tr_order_insert
AFTER INSERT ON orderlist
FOR EACH ROW
UPDATE product SET stock = stock - NEW.qty WHERE pid = NEW.pid;
【解析】本题考INSERT AFTER触发器,NEW引用新记录值。
39. 已知有课程表course(cno VARCHAR(10) PRIMARY KEY, cname VARCHAR(50), credit INT, teacher VARCHAR(30))和学生选课表sc(sno VARCHAR(10), cno VARCHAR(10), grade INT),请写出SQL命令:查询选修了课程名为'数据库原理'的学生的学号和成绩,按成绩降序排列。
【答案】
SELECT sc.sno, sc.grade
FROM sc
INNER JOIN course ON sc.cno = course.cno
WHERE course.cname = '数据库原理'
ORDER BY sc.grade DESC;
【解析】本题考查多表连接+WHERE条件+ORDER BY,考查内容关键词:INNER JOIN、多表连接、条件过滤。
40. 已知有员工表emp(empno INT PRIMARY KEY, ename VARCHAR(30), sal DECIMAL(10,2), deptno INT),请写出SQL命令:分别查询各部门(按部门号分组)的最高工资和最低工资,以及获得最高工资的员工姓名。
【答案】
SELECT e.deptno, e.ename, MAX(e.sal) AS max_sal, MIN(e.sal) AS min_sal
FROM emp e
JOIN (
SELECT deptno, MAX(sal) AS max_sal
FROM emp
GROUP BY deptno
) m ON e.deptno = m.deptno AND e.sal = m.max_sal
GROUP BY e.deptno, e.ename;
【解析】本题综合考查分组聚合查询、子查询、多表连接,先通过子查询获取各部门最高工资,再与员工表连接匹配出对应员工姓名,最终查询结果包含部门号、最高工资、最低工资、最高工资员工姓名。
学科网(北京)股份有限公司
$