1、 2026年数据库(数据库应用开发)考题及答案 (考试时间:90分钟 满分100分) 班级______ 姓名______ 第I卷(选择题 共30分) (总共6题,每题5分,每题给出的四个选项中,只有一项是符合题目要求的) w1. 以下关于数据库事务的说法,错误的是( ) A. 事务具有原子性、一致性、隔离性和持久性 B. 一个事务中的操作要么全部执行,要么全部不执行 C. 事务的隔离性保证了并发事务之间不会相互干扰 D. 事务一旦提交,数据的修改就不能再撤销,这体现了事务的一致性 答案:D w2. 数据库设计中,概念结构设计的主要工具是(
2、 ) A. 数据流程图 B. 实体 - 联系图 C. 程序流程图 D. 模块结构图 答案:B w3. 若要在数据库中创建一个存储过程,用于查询某一范围内的数据,以下语法正确的是( ) A. CREATE FUNCTION query_data() AS BEGIN... END B. CREATE PROCEDURE query_data() AS BEGIN... END C. CREATE VIEW query_data AS BEGIN... END D. CREATE INDEX query_data AS BEGIN... END 答案:B w4.
3、在关系数据库中,实现表与表之间的联系是通过( ) A. 实体完整性规则 B. 参照完整性规则 C. 用户自定义的完整性规则 D. 值域 答案:B w5. 以下哪种数据库备份方式备份速度最快( ) A. 完全备份 B. 差异备份 C. 事务日志备份 D. 增量备份 答案:A w6. 数据库管理系统中,负责数据的安全性、完整性和并发控制的是( ) A. 存储管理器 B. 查询处理器 C. 事务管理器 D. 文件管理器 答案:C 第II卷(非选择题 共70分) w7. 简答题(15分) 简述数据库索引的作用及优缺点。 w8. 设计
4、题(20分) 假设要设计一个学生成绩管理数据库,包含学生表(学号,姓名,性别,年龄)、课程表(课程号,课程名,学分)、成绩表(学号,课程号,成绩)。请画出该数据库的E-R图,并写出创建这三个表的SQL语句。 w9. 编程题(20分) 使用SQL编写一个存储过程,输入学生姓名,查询该学生的所有课程成绩。 w10. 分析题(15分) 给定一个数据库系统,在高并发情况下出现了数据不一致的问题。请分析可能导致该问题的原因,并提出解决方案。 材料:在一个电商数据库中,有订单表(订单号,用户ID,商品ID,订单金额,订单时间),商品表(商品ID,商品名称,价格,库存)。当多个用户同
5、时下单购买同一款商品时,出现了库存数据不一致的情况。 w11. 综合题(20分) 材料:有一个图书借阅数据库,包含读者表(读者ID,读者姓名,联系方式)、图书表(图书ID,图书名称,作者,出版社)、借阅表(读者ID,图书ID,借阅日期,归还日期)。 请编写SQL语句完成以下操作: 1. 查询所有未归还图书的读者姓名和所借图书名称。 2. 查询借阅图书数量最多的读者姓名。 3. 将所有图书的价格提高10%。 答案: w7. 索引的作用:提高数据查询速度,通过索引可以快速定位到所需数据;可以加速表与表之间的连接操作。优点:显著提高查询效率,减少磁盘I/O次数。缺点:增加了数
6、据库的存储空间开销,因为索引本身需要占用一定的存储空间;在插入、更新和删除数据时,维护索引会增加额外的开销,降低数据库的操作性能。 w8. E-R图: 学生表(学号,姓名,性别,年龄) 课程表(课程号,课程名,学分) 成绩表(学号,课程号,成绩) 学生表与成绩表通过学号关联,课程表与成绩表通过课程号关联。 创建表的SQL语句: CREATE TABLE student ( student_id VARCHAR(20) PRIMARY KEY, name VARCHAR(20), gender VARCHAR(2), age INT )
7、 CREATE TABLE course ( course_id VARCHAR(20) PRIMARY KEY, course_name VARCHAR(50), credit INT ); CREATE TABLE score ( student_id VARCHAR(20), course_id VARCHAR(20), score INT, PRIMARY KEY (student_id, course_id), FOREIGN KEY (student_id) REFERENCES student
8、student_id), FOREIGN KEY (course_id) REFERENCES course(course_id) ); w9. CREATE PROCEDURE query_student_score(IN student_name VARCHAR(20)) BEGIN SELECT c.course_name, s.score FROM student s JOIN score sc ON s.student_id = sc.student_id JOIN course c ON sc.course_id = c
9、course_id WHERE s.name = student_name; END; w10. 可能导致数据不一致的原因:并发事务对共享数据的读写操作没有正确的隔离,例如未提交读、脏读、不可重复读等;事务在执行过程中出现故障,如系统崩溃、硬件故障等,导致数据未及时持久化或回滚。 解决方案:使用合适的事务隔离级别,如READ COMMITTED可避免脏读,REPEATABLE READ可避免不可重复读;采用乐观锁或悲观锁机制来控制并发访问;定期进行数据库备份,并制定完善的恢复计划,以便在出现故障时能快速恢复数据。 w11. 1. SELECT r.name, b.b
10、ook_name FROM reader r JOIN borrow br ON r.reader_id = br.reader_id JOIN book b ON br.book_id = b.book_id WHERE br.return_date IS NULL; 2. SELECT r.name FROM reader r JOIN borrow br ON r.reader_id = br.reader_id GROUP BY r.name ORDER BY COUNT(br.book_id) DESC LIMIT 1; 3. UPDATE book SET price = price 1.1;






