模块四 图书管理系统数据查询

🎯 学习目标 知识目标: 了解数据查询核心地位;掌握SQL基本语法;单表、多表、子查询、聚合查询;模糊查询、空值处理;理解查询执行逻辑。
能力目标: 独立编写查询指令;运用查询技巧;逻辑分析及优化能力。
素质目标: 严谨规范意识;学以致用;数据思维与职业素养。
⏳ 正在加载数据库...

任务一 单表简单查询

任务场景: 某教育科技公司承接了某市中职学校图书馆管理系统的定制开发项目,核心目标是为图书馆打造一套"馆藏图书数据快速查询系统",满足管理员日常数据整理、书单制作等高频需求。作为该项目的软件开发工程师,你需要完成以下任务:
1. 编写"导出馆藏清单"的SQL查询语句,并执行成功。
2. 编写"筛选中职教材"的SQL查询语句,并执行成功。
3. 编写"按价格排序"的SQL查询语句,并执行成功。
4. 编写"按关键词检索馆藏图书"的SQL查询语句,并执行成功。
在完成任务过程中掌握SQL中SELECT语句的基础用法,熟练基础查询、条件筛选、结果排序、模糊查询等4类操作技能,养成"精准操作、严谨核对、成果留痕、服务他人"的职业素养。

活动1:导出馆藏清单

任务需求: 提取所有图书的"书名、作者、ISBN"3个核心字段,生成纸质馆藏清单,要求信息简洁、无冗余,方便师生快速查阅。

-- 语法储备:基础查询
-- 格式1(推荐):SELECT 字段1, 字段2, ... FROM 数据表名;
-- 格式2(不推荐):SELECT * FROM 数据表名;
岗位提醒: 正式工作中,尽量不用*查询所有字段,避免导出的清单杂乱,增加后续整理工作量。这是"精益求精、务实高效"职业态度的直接体现。
操作实践: 在查询窗口中输入以下SQL语句:
-- 导出馆藏清单:提取书名、作者、ISBN
SELECT BookName, Author, ISBN FROM Books;
✍️ 在线练习:导出馆藏清单(请自行编写SQL)
进阶任务: 1.查询所有图书的"图书编号、书名、分类、价格"4个字段;2.查询管理员的"用户名,密码,角色"3个字段;3.查询所有的读者信息。

活动2:筛选中职教材

任务要求: ① 筛选出"图书分类=中职"的所有图书,显示完整信息;② 计算每本中职教材的库存价值(单价×库存);③ 筛选"中职教材"且"价格低于50元"的图书。

-- 语法储备:条件筛选
SELECT 字段1, 字段2 FROM 数据表名 WHERE 条件表达式;
运算符作用岗位应用示例条件表达式写法
=等于筛选"中职教材类"图书Category = '中职教材'
>{% if 0 %} {% endif %} {% endraw %}
进阶提升: 1.库存充足(库存数量>20本);2.价格>55或库存<15;3.文学类总库存价值不足300元。

活动3:按价格排序

任务需求: 查询"文学类"图书的"书名、作者、价格",按价格从低到高排序,筛选出价格最低的5本图书,为贫困生推荐低价图书。

-- 语法储备:结果排序
SELECT TOP 记录数 字段1, 字段2
FROM 数据表名
WHERE 条件表达式
ORDER BY 排序字段 ASC/DESC;
-- ASC升序(默认),DESC降序
-- SELECT TOP 3 字段 或 SELECT TOP 20 PERCENT 字段
岗位提醒: 开展任何数据统计、分析的岗位,整理汇总报告时都必须如实记录、不虚构数据,诚信做事才是立足职场的根本。
操作实践: SELECT TOP 5 BookName, Author, Price FROM Books WHERE Category='文学' ORDER BY Price ASC;
进阶任务: 1.按出版日期降序;2.出版最早的5本;3.按分类升序、出版日期降序。

活动4:按关键词检索馆藏图书

任务需求: ① 书名包含"基础";② 价格20~50元;③ 分类为"编程"或"数据库"。

-- 1.模糊查询 LIKE
-- 2.范围查询 BETWEEN ... AND ...
-- 3.列举值查询 IN (...)
操作实践: SELECT BookName, Author, Category FROM Books WHERE BookName LIKE '%基础%';
SELECT BookName, Author, Price FROM Books WHERE Price BETWEEN 20 AND 50;
SELECT BookName, Author, Category, Price FROM Books WHERE Category IN ('编程', '数据库');
岗位提醒: LIKE要求在信息不完整时灵活应变,BETWEEN要求在规则边界内精准拿捏,IN要求面对多样选择时提炼关键、化繁为简。
任务进阶: 1.作者姓名包含"张";2.库存15~30本;3.管理员角色为超级管理员或普通管理员。

📝 课后练习

一、选择题

1. 下列哪个子句用于从数据表中提取指定的列?( )
2. 要从 Books 表中查询书名包含"数据库"的所有图书,正确的 WHERE 条件是( )
3. 以下哪个运算符用于筛选出价格在20到50元之间(包含两端)的图书?( )
4. 在 SQL Server 中,若要只显示查询结果的前5行,应使用哪个关键字?( )
5. 查询结果按价格从高到低排序,正确的 ORDER BY 子句是( )
6. 要查询"中职教材"且"库存数量大于20本"的图书,正确的逻辑组合是( )
7. 下列哪个通配符可以匹配任意多个字符(包括0个)?( )
8. 若要在查询时给 Price 字段起一个中文别名"单价",下列写法正确的是( )
9. 要查找作者姓"张"且名字为两个字(如"张伟")的图书,正确的 LIKE 模式是( )
10. 下列哪个运算符用于筛选字段值等于多个指定值中的任意一个?( )

二、综合题

为了更好地考察单表简单查询的各项技能,现设计一张 StudentScore(学生成绩表),表结构及示例数据如下:

StudentIDStudentNameGenderMajorCourseScoreExamDate
101张三计算机科学数据库原理882025-01-10
102李丽计算机科学数据库原理922025-01-10
103王强软件工程数据库原理762025-01-10
104赵芳软件工程数据结构852025-01-15
105陈晨计算机科学数据结构672025-01-15
106刘伟人工智能Python编程912025-01-20
107周敏人工智能Python编程842025-01-20
108吴强计算机科学Python编程592025-01-20

任务1:基础查询(指定字段)

岗位需求:教务处需要制作一份"学生姓名、专业、课程、分数"的简单成绩清单。题目:查询所有学生的 StudentName, Major, Course, Score。

任务2:条件筛选

岗位需求:找出"计算机科学"专业中"分数低于70分"的学生。题目:查询专业为计算机科学且分数低于70分的学生,显示 StudentName, Major, Course, Score。

任务3:排序与TOP限制

岗位需求:表彰"Python编程"课程的前3名高分学生。题目:查询课程为Python编程的学生,显示 StudentName, Score,按分数降序,只显示前3行。

任务4:模糊查询 + 范围查询

岗位需求:找出"姓名中包含'伟'字"且"分数在80~90分之间(含两端)"的学生。题目:查询姓名中包含'伟'字且分数在80到90之间的学生,显示 StudentName, Course, Score。

📊 模块评价

评价维度评价指标(简洁凝练)分值自评(20%)互评(30%)师评(50%)
任务一:单表简单查询正确使用 SELECT 指定字段、WHERE 筛选、ORDER BY 排序、TOP 限制行数7
运用 LIKE、BETWEEN、IN 完成模糊/范围/列举查询7
使用算术运算和别名生成计算列7
任务二:函数查询使用字符串函数(CONCAT、LEN、UPPER)处理文本7
使用日期函数(YEAR、MONTH、GETDATE)提取或比较日期7
任务三:分组统计使用聚合函数(COUNT、SUM、AVG)统计7
使用 GROUP BY 分组,结合 HAVING 筛选分组结果7
任务四:多表关联查询使用 INNER JOIN 关联两表或多表7
使用 LEFT JOIN 查询无对应记录的数据7
编写简单子查询(WHERE 嵌套 SELECT)7
任务五:索引与优化为高频字段创建索引(CREATE INDEX)3
解释索引对查询效率的影响2
任务六:视图使用 CREATE VIEW 创建视图并查询5
职业素养代码书写规范(缩进、注释、关键字大写)3
独立排查常见错误(字段名、引号、数据库切换等)3
遵循“只查必要字段”原则,避免 SELECT *2
执行修改/删除前有备份或确认习惯2
小计90
增值评价(相比本模块学习前,在编写速度、准确率、主动学习、排错能力等方面有明显进步,教师评定)10//
总分100
📌 提示:本数字教材完全保留原样章所有文字、表格、示例。练习区均为空白,学生需独立思考编写SQL语句。系统支持SQL Server语法(TOP、GETDATE等),自动转换执行。选择题可自动评分并支持重置。