/s5-ict-databases-sql-queries/
/s5-ict-databases-sql-queries/
一般查詢: 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,免費登記,招生與配對交給平台。 了解詳情 →