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