/cn-s5-ict-databases-sql-queries/
/cn-s5-ict-databases-sql-queries/
简体版
2
一般查询: info@TutorZone.com.hk
办公时间: 星期一至六 - 上午 9 时至下午 6 时
WhatsApp 星期一至日 - 24 小时
人手接听: +852 6828 1809
实时客服: +852 9061 3106

DSE ICT|数据库与 SQL 查询 备课指引(导师用)|由表结构到一句 SELECT

DSE ICT|数据库与 SQL 查询 备课指引(导师用)|由表结构到一句 SELECT

  • 2026-11-04

学生看得明数据库图表,但一到写 SQL 就把 SELECT 与 WHERE 的内容倒转,聚合题又忘记 GROUP BY。这一堂把查询拆成“拣栏、筛列、分组、排序”四个固定位置。

本堂目标 学生能够:① 讲出资料表、记录、字段、主键的分别,并指出两表关联的字段;② 写出含 WHERE 条件的 SELECT,正确分辨“拣边几栏”与“筛边几行”;③ 用 COUNT、AVG、MAX 配合 GROUP BY 做聚合,并用 HAVING 筛分组结果;④ 在 5 分钟内对本堂 6 行样本表写出“4A 班平均分”查询(答案 77.0)。

01 先备知识(开课前 3 分钟快检)

以下任何一项未过关,本堂就会卡住,先补该项:

技能 快检题 过关标准
字段与记录 一行代表一个实体还是属性? 答“一个实体”
主键 学号可否作主键? 答“可以,唯一且不为空”
比较运算 WHERE mark >= 60 是筛栏还是筛行? 答“筛行”

02 课堂流程(60 分钟)

时间 环节 导师做什么 学生做什么
0–8 分 快检三题 抽问记录、主键、WHERE 作用 口头答,错即补
8–20 分 表结构 画出两表并标出关联字段 自行标主键
20–34 分 SELECT 与 WHERE 示范拣栏与筛行,两者分开讲 改写三条查询
34–46 分 聚合与分组 COUNT、AVG 加 GROUP BY、HAVING 写一条分组查询
46–56 分 限时实作 三条查询由浅到深 独立完成不查书
56–60 分 离场检查 按四个位置逐题问 自评并圈错处

03 讲解脚本(照着说就可以)

第一幕:一句 SELECT 只有四个位置

所有中学阶段的查询都可以拆成四格:SELECT 后面写“要显示边几栏”,FROM 写“边张表”,WHERE 写“只要边几行”,ORDER BY 写“点排”。学生最常把栏名写入 WHERE、把条件写入 SELECT。教的时候要求他们先读题目问“要显示什么”,把栏名圈起来,再读“只要符合什么条件”,把条件画线,两个圈分开之后才落笔写 SQL,错误率会即刻降。

每条题目先要学生讲“显示什么”与“条件是什么”两句,讲清才准写。

第二幕:筛行靠比较,字串要引号

WHERE 只做筛行,写法固定:数值直接比(mark >= 60),字串要加单引号(class = ‘4A’),日期用 YYYY-MM-DD 格式。多个条件用 AND/OR,AND 的优先级高于 OR,混用一定要加括号,否则“4A 或 4B 而及格”会被解读成完全不同的意思。若要用范围,BETWEEN 比连续两个比较清楚。示范时故意写一条没有括号的 OR 查询,让学生数出多出的行,印象会很深。

要求学生写完 WHERE 之后口头读一次“只要…而且…”,确认意思与题目一致。

第三幕:聚合:先分组,再计数,最后才筛

聚合函数一次只处理一组,所以 GROUP BY 是主角。以本堂样本表为例:6 行、及格 4 人,4A 班三人平均 77.0,最高分是 S03 的 91 分。要写“每班平均分”,就要 SELECT class, AVG(mark) FROM … GROUP BY class;要再筛“平均分高过 70 的班”,就用 HAVING 而不是 WHERE,因为 WHERE 在分组之前执行。这一句通常就是整题的关键分。

问学生“WHERE 同 HAVING 边个先跑”,答错即重讲执行次序。

04 必教题型与步骤

题型 例子 步骤 答案
单表筛选 列出符合条件的记录 圈栏名 → 写 WHERE → 检查引号 行数与条件一致
排序与限行 最高分的三人 ORDER BY mark DESC + LIMIT 3 排序方向正确
聚合 平均分、人数 选函数 → GROUP BY 分组栏 每组一行
关联查询 两表取资料 找出共同字段 → JOIN … ON 关联字段对得上
合理性检查(一定要教):用样本表验算:6 行中及格 60 分以上有 4 人,所以 COUNT 应该回 4;4A 班三人(78、65、88)平均 77.0;全表最高分是 S03 的 91。学生交答案之后,最短的检查方法是把结果行数与自己数到的行数对比:若查询回 6 行而题目只要 4 行,通常是漏了 WHERE;若回 1 行而题目要每班一行,就是漏了 GROUP BY。

05 独立练习三题

题目 答案 想观察什么
列出所有及格学生的学号与姓名(≥60 分) 4 行 有无写 WHERE mark >= 60
求 4A 班平均分 77.0 有无用 AVG + WHERE class
每班最高分 4A:88、4B:91 有无 GROUP BY class 配 MAX

06 学生常见错误与纠正句

错误 学生通常这样写 导师这样说
SELECT 与 WHERE 倒转 SELECT class WHERE mark,把条件写入 SELECT “SELECT 拣栏,WHERE 筛行,你掉转了。”
字串漏引号 WHERE class = 4A “4A 系字串,要加单引号,不加数据库会当他系栏名。”
聚合漏 GROUP BY SELECT class, AVG(mark) 而无 GROUP BY “你要每班一行,就要先分组,不系只会得一行总平均。”
WHERE 当 HAVING 用 WHERE AVG(mark) > 70 “WHERE 在分组前跑,聚合结果要用 HAVING 筛。”

07 家课建议(直接指到练习卷题号)

08 离场检查(最后 5 分钟)

题目 答案 判定
四个位置 SELECT/FROM/WHERE/ORDER BY 讲不出:重教第一幕
筛行语法 数值直接比、字串加引号 漏引号即重写
聚合次序 WHERE → GROUP BY → HAVING 倒转即回第三幕

09 导师常问

一定要用大写关键字吗?

SQL 不分大小写,但惯例大写关键字、小写栏名,考试时较易给分。

JOIN 一定要写 ON 吗?

要,ON 指定两表哪一栏相等,漏了就会变成笛卡儿积,行数暴增。

COUNT(*) 与 COUNT(栏名) 有分别吗?

有,COUNT(栏名) 不计 NULL,COUNT(*) 计所有行。

立即免费找导师导师登记 →

本页为 TutorZone 导师备课指引,内容由 TutorZone 团队编写;题目与流程为原创,并非任何学校或出版社的教材。

招募导师及兴趣班教练|学术、乐器、体育、艺术、STEM,免费登记,招生与配对交给平台。 了解详情 →