5.0 導入與本頁工具
本頁會循序介紹必修單元 A 之「數據庫」範圍,並配合一個可即時操作的數據庫工具,讓你可以邊學邊做。 你會練習:建立簡單數據表、利用表單輸入資料、進行單表查詢(選取/篩選/排序)、製作基本報表,以及解讀簡單 SQL(結構化查詢語言)語句。
重點提醒:本頁的練習以「單表」為主(符合必修要求),但你亦會在頁末看到「同一個數據庫可以包含多張數據表」的完成品示例。
練習方式:同一個引擎 + 每個課題獨立 sandbox
- 數據庫工具的引擎只會載入一次,操作更流暢。
- 每一個課題都有自己的練習區(sandbox):你在某一節所做的改動,不會影響其他課題。
- 每一節都提供「重置」按鈕:需要回到起點時,一按即可清除該練習區的改動。
- 工具右上角提供「顯示其他數據表」開關:預設只顯示本節需要的重點數據表;如課堂需要或你想延伸探索,可打開以查看其他表。
5.1 DBMS 實作:簡單表、欄類型、基本輸入
重點
-
理解數據庫管理系統(DBMS)在「儲存、管理、查詢」資料上的角色,以及「數據庫 → 數據表 → 欄 → 紀錄」的層次。
操作教學:
- 按上方「開啟本節練習」打開工具,工具會停留在 Tables 分頁。
- 在左側列表觀察:目前練習區是空白的(刻意設計),你將由零開始建立一張新數據表。
- 你建立好數據表後,左側會出現表名;點擊表名即可進入該表的資料檢視(Datasheet)。
-
能建立一張簡單數據表,設定欄名與資料類型,並為重要欄加入基本約束(例如:必填、唯一)。
操作教學(示例:建立
students表):- 在 Tables 分頁按 + Table。
- 在「Table Name」輸入:
students。 - 依次加入以下欄(每列一個欄):
-
建議欄設計
- StudentID:Type 選 TEXT;勾選 PK(主鍵)及 NN(不可留空)
- Name:Type 選 TEXT;勾選 NN
- ClassID:Type 選 TEXT;勾選 NN
- Score:Type 選 INTEGER;可先不勾 NN(允許暫時空白)
- 按 Save 儲存數據表。
- 成功後,你會在左側看到
students,點擊它進入資料檢視。
-
能在資料檢視(Datasheet)輸入基本資料,並分辨「一格是欄值、一行是一筆紀錄」。
操作教學:
- 在左側點選
students。 - 在右側選擇子分頁 Datasheet(如未顯示,請先確認你已點選該數據表)。
- 嘗試新增 2–3 筆紀錄,例如:
-
示例紀錄
StudentID =S101,Name =陳小華,ClassID =4A,Score =76 - 若你輸入了重覆的 StudentID(已設為主鍵),系統會提示錯誤;這正是約束保護數據一致性的例子。
- 在左側點選
-
懂得用簡單約束提升數據質素,例如用 CHECK 限制數值範圍。
操作教學(為 Score 加入範圍約束):
- 在 Tables 分頁選擇
students,切到子分頁 Design。 - 找到
Score那一行,在「CHECK」欄輸入:Score BETWEEN 0 AND 100 - 按 Save。
- 回到 Datasheet,嘗試輸入 Score =
120,觀察系統如何阻止不合理數值。
- 在 Tables 分頁選擇
定義:數據庫管理系統是一套軟件,用來建立、儲存、整理及存取數據庫中的資料;它提供介面與規則,讓使用者可以安全地新增、修改、查詢資料。
原理 / 運作:DBMS 會把資料以「數據表」形式儲存,並以約束(例如主鍵、不可留空)維持一致性;當你查詢資料時,DBMS 會按查詢條件從資料中找出符合的紀錄,再把結果呈現。
例子:學校用一個數據庫管理學生資料:新增學生、查詢某班的成績、按分數排序等,都由 DBMS 代勞。
比較:用試算表亦可儲存資料,但 DBMS 更適合多人共用、資料量大、需要一致性與查詢效率的情境;而且 DBMS 有更嚴格的結構與約束。
常見錯誤:把 DBMS 當成「只有一張表」;其實 DBMS 管理的是整個數據庫(可以包含多張數據表、查詢、報表等)。
定義:數據表(Table)是一組有結構的資料集合;欄(Field)描述資料的「種類/屬性」;紀錄(Record)是一筆完整資料。
原理 / 運作:每一筆紀錄會在每個欄都有一個欄值(value)。DBMS 會按欄定義的資料類型與約束檢查欄值,並把每筆紀錄一致地存放。
例子:students 表可有欄:StudentID、Name、ClassID、Score。每一行就是一位學生的紀錄。
比較:試算表也有列與欄,但 DBMS 的欄有固定資料類型與約束,並可用查詢語句快速篩選與排序。
常見錯誤:把「欄名」寫成資料(例如把某位學生名字當作欄名);欄名應代表資料類別,不應是某一筆資料內容。
定義:資料類型用來描述欄值應該是甚麼形式(例如文字、整數、日期)。
原理 / 運作:當欄定義為整數,DBMS 可以進行數學比較與排序;若把數字當文字存放,排序可能變得不合理(例如把 100 排在 20 前面)。
例子:Score 用 INTEGER;StudentID、Name 用 TEXT。這樣可對 Score 做「>= 60」的篩選或由高至低排序。
比較:同一個資料(例如分數)用 TEXT vs INTEGER:TEXT 更像字串;INTEGER 是數值,便於計算與比較。
常見錯誤:所有欄都選 TEXT,導致排序/比較結果奇怪;或把 StudentID 設成 INTEGER,令需要前置零(例如 S001)時難以處理。
定義:約束是 DBMS 用來限制欄值/紀錄必須符合的規則,例如 PK(主鍵)、NN(不可留空)、UQ(不可重覆)、CHECK(必須符合條件)。
原理 / 運作:當你輸入或更新資料時,DBMS 會先檢查所有約束;若違反,操作會被拒絕並顯示錯誤,避免錯誤資料流入數據庫。
例子:StudentID 設為 PK 可以避免重覆;Score 加上 Score BETWEEN 0 AND 100 可阻止 120 這類不合理分數。
比較:表單驗證(Form validation)可提示使用者,但最終仍應由 DBMS 約束把關,因為資料可能從不同途徑進入(例如匯入、SQL)。
常見錯誤:只靠人手小心輸入而不設約束;或把 CHECK 寫錯語法,導致規則無法生效。
定義:Datasheet 是直接在數據表格狀畫面輸入資料;表單(Form)是為輸入而設的介面,可加入提示與限制。
原理 / 運作:兩者最終都會把資料寫入同一張數據表;差別在於表單能更清晰地引導輸入流程,減少漏填與錯填。
例子:新增學生紀錄時,Datasheet 需要你自己對準欄;表單則會逐項顯示欄名與輸入框。
比較:大量批次輸入可用 Datasheet;需要準確與易用可用表單。
常見錯誤:在 Datasheet 直接改動大量資料而不察覺錯行;或以為表單資料不會受約束限制(其實一樣要受約束)。
在必修範圍內,你不需要建立非常複雜的數據庫結構,但你必須理解 DBMS 如何把資料變成「可管理」的形式。最核心的概念是: DBMS 不是單純儲存資料,而是透過「數據表結構(欄)+規則(約束)」把資料整理成一致而可靠的狀態,方便之後查詢與輸出。
建表時,先想清楚「你要記錄甚麼」:例如學生資料最少要有 StudentID、Name、ClassID。然後再想「哪一些欄必須唯一、必須存在」, 例如 StudentID 不應重覆,所以適合做主鍵;Name 不能空白,所以可設為不可留空。
最後一步是把資料放進去並檢查約束是否有效。若你發現系統能夠阻止重覆 StudentID 或不合理的分數, 代表你的表設計已能協助你維持資料的正確性,後續做查詢與報表時就會更可靠。
Check Point 5.1:概念快測
5.2 Form 入數
重點
-
明白表單(Form)的用途:用較友善的介面把資料寫入數據表,減少漏填與錯填。
操作教學:
- 按「開啟本節練習」打開工具,系統會載入有示例資料的
students表。 - 在分頁列選擇 Forms,你會看到以
students表為基礎的輸入介面。 - 表單每一項輸入框對應數據表的一個欄,提交後會新增一筆紀錄。
- 按「開啟本節練習」打開工具,系統會載入有示例資料的
-
能用表單新增紀錄,並懂得回到 Datasheet 驗證資料是否成功寫入。
操作教學:
- 在 Forms 分頁填寫:
-
StudentID =
S200,Name =何家明,ClassID =4B,Score =61 - 按表單的提交按鈕(Submit / Add / Insert)。
- 切換到 Tables → Datasheet,檢查是否出現新紀錄(可用排序或查詢協助尋找)。
-
能理解表單輸入仍會受數據表約束影響,並能根據錯誤訊息修正輸入。
操作教學(故意觸發一次錯誤):
- 在表單中嘗試輸入一個已存在的 StudentID(例如
S001)並提交。 - 觀察系統提示:因 StudentID 是主鍵,不能重覆。
- 把 StudentID 改為新值(例如
S201)後再提交。
- 在表單中嘗試輸入一個已存在的 StudentID(例如
-
能把「輸入介面」與「資料設計」連繫:資料設計越清晰(欄名、約束越合理),表單越容易正確輸入。
操作教學:
- 回到 Tables → Design 檢視
students的欄設計(PK、NN、CHECK 等)。 - 思考:若 Score 沒有範圍約束,表單便難以阻止 999 這類輸入;相反,有約束時 DBMS 會替你把關。
- 回到 Tables → Design 檢視
定義:表單是一個以使用者為中心的輸入介面,用來新增或修改數據表中的紀錄。
原理 / 運作:表單會把你輸入的值對應到數據表的各個欄,提交後由 DBMS 執行插入/更新;若違反約束,DBMS 會拒絕並回報錯誤。
例子:在學生資料表單中輸入 StudentID、Name、ClassID、Score,提交後新增一位學生。
比較:Datasheet 是直接對表格輸入;表單更適合逐項輸入、需要提示或限制的情況。
常見錯誤:以為表單一定能防止錯誤;其實若數據表本身沒有約束,表單也未必能判斷資料是否合理。
定義:表單欄位(輸入框)對應數據表的欄;一次提交通常等於新增或更新一筆紀錄。
原理 / 運作:DBMS 以數據表結構作為「真實規格」;表單只是讓你更容易填寫。換言之,表單的「正確輸入」要回到數據表規格確認。
例子:StudentID 是主鍵 → 表單必須輸入且不能與現有紀錄重覆。
比較:如果把規則只寫在表單,資料由匯入或 SQL 進入時可能繞過檢查;把規則寫在數據表約束,所有途徑都會一致受控。
常見錯誤:只檢查「表單看起來沒問題」而不回到 Datasheet 驗證;結果資料未成功寫入也不自知。
定義:輸入驗證(validation)是確保輸入資料符合規則的檢查機制。
原理 / 運作:表單可做「介面層」驗證(例如提示必填),DBMS 則做「資料層」驗證(例如主鍵唯一、CHECK 範圍)。兩者配合可最大限度降低錯誤。
例子:Score 只能 0–100:表單可提示範圍;DBMS 用 CHECK 強制限制。
比較:只靠表單驗證:若有人用 SQL 插入 120 仍可能成功(視乎有否約束);加入 DBMS 約束後就能統一把關。
常見錯誤:把「可以提交」誤當「資料一定正確」;其實仍要檢查資料的一致性(例如 ClassID 是否按學校命名規則)。
定義:良好的輸入流程能提升準確度與效率。
原理 / 運作:先決定欄的命名與規格(資料類型、必填、唯一),再設計表單順序與提示,最後用少量測試資料驗證(包括刻意測試錯誤)。
例子:先在 tables 設定 StudentID 為主鍵,再在表單輸入重覆 StudentID 測試,確認系統會阻止。
比較:未做測試就投入使用,常導致資料表已累積錯誤後才補救;相反,先測試可及早發現問題。
常見錯誤:測試只輸入「看起來正確」的資料,而沒有測試「錯誤資料」;結果規則失效也不知道。
表單的價值不只是「看起來比較易輸入」,而是它能讓輸入流程更一致、降低錯誤率。當數據表設計清晰, 表單就能直接反映你的設計:哪些欄必須填、哪些值不合理、哪些欄不可重覆。
但要注意:表單不是萬能。最可靠的做法,是把關鍵規則放到數據表的約束中(例如主鍵、CHECK), 表單則負責提供清晰的輸入介面。這樣即使資料由其他方式進入(例如匯入或 SQL),依然能保持一致。
完成表單輸入後,請養成習慣回到 Datasheet 驗證資料是否真的寫入,以及是否符合預期。 這是最簡單但最有效的「自我檢查」。
Check Point 5.2:表單輸入判斷題
5.3 單表 Query:select / filter / sort
重點
-
掌握單表查詢的三件事:選取(SELECT 取哪些欄)、篩選(WHERE 留哪些紀錄)、排序(ORDER BY 以甚麼次序顯示)。
操作教學:
- 按「開啟本節練習」進入工具,切到 Queries 分頁。
- 在「Base table」選擇
students(如已預設選好可略過)。 - 在 fields 區把需要顯示的欄勾選(例如 StudentID、Name、ClassID、Score)。
- 先不加任何條件,按 Preview 查看「純選取」結果。
-
能做基本篩選(filter):只顯示符合條件的紀錄,例如某班學生或及格學生。
操作教學(例:只看 4A 並且 Score ≥ 60):
- 在 criteria 區新增條件:
-
- Field:
ClassID;Op:=;Value:'4A' - Field:
Score;Op:>=;Value:60
- Field:
- 按 Preview,觀察結果是否只剩下符合條件的紀錄。
- 如果沒有結果,請檢查:ClassID 是否有加單引號、Score 是否打錯比較符號。
-
能做基本排序(sort):例如以分數由高至低,並以姓名作第二排序。
操作教學:
- 在 sort 區設定:
-
- 第一排序:Field =
Score,Direction =DESC - 第二排序(可選):Field =
Name,Direction =ASC
- 第一排序:Field =
- 按 Preview 檢查排序是否符合預期。
-
懂得把查詢保存(save)以供之後的報表使用,並知道查詢本身是「結果」,不是「新資料」。
操作教學:
- 完成查詢後,在右側的「Saved Queries」按 Save current query。
- 輸入名稱(例:
q_4A_pass)並確定。 - 你可按 Saved query 旁的 Load 將 SQL 送到 SQL Console(方便你學 SQL)。
定義:SELECT 決定輸出哪些欄;WHERE 決定保留哪些紀錄;ORDER BY 決定顯示次序。
原理 / 運作:你可以把查詢想成「先找資料(FROM)→ 篩選(WHERE)→ 選欄(SELECT)→ 排序(ORDER BY)」的流程(實際邏輯次序會在 SQL 節詳述)。
例子:SELECT Name, Score FROM students WHERE ClassID='4A' ORDER BY Score DESC;
比較:只用 SELECT(無 WHERE)=不篩選;只用 ORDER BY(無 WHERE)=不刪走任何紀錄,只改次序。
常見錯誤:把排序當成篩選(以為 ORDER BY 會「只保留」某些紀錄);或忘記文字要加單引號。
定義:篩選是用條件挑選符合的紀錄,例如等於、不等於、大於、包含文字等。
原理 / 運作:WHERE 條件會逐筆檢查紀錄是否符合;符合才保留到結果中。
例子:Score >= 60(及格);ClassID='4B'(某班);Name LIKE '陳%'(姓陳)。
比較:數值比較(>=、<)用於 INTEGER;文字比較(LIKE)用於 TEXT。
常見錯誤:把數值寫成帶引號的文字(雖然有時仍可運作,但容易引發理解混亂);或把 LIKE 寫成 =。
定義:排序是決定輸出結果的排列次序,ASC 為由小至大(或 A→Z),DESC 為由大至小(或 Z→A)。
原理 / 運作:ORDER BY 可寫多個欄:先按第一欄排序;若相同,再按第二欄排序。
例子:ORDER BY Score DESC, Name ASC:先分數高者先出;同分時按姓名字母順序。
比較:排序不會改動原數據表的儲存次序;它只影響「查詢結果」的顯示次序。
常見錯誤:以為排序會改變表本身次序;或把 DESC/ASC 寫反。
定義:保存查詢是把你常用的查詢語句記下來,方便日後重用。
原理 / 運作:保存的是「查詢規則/語句」,不是把結果複製成新資料;當數據表更新,查詢結果會跟著改變。
例子:保存 q_4A_pass 後,下一次只要載入再 preview,就能得到最新 4A 及格名單。
比較:保存查詢 vs 另存結果成新表:前者保持動態更新;後者容易出現過期資料(除非你定期更新)。
常見錯誤:以為保存查詢會永久固定當刻結果;或把查詢名改得不清晰,日後難以辨認。
單表查詢是數據庫最常用的能力之一:即使只有一張表,只要你懂得「選取、篩選、排序」,便可以從大量紀錄中找出需要的資訊。 在 DSE 層面,尤其要熟悉 SELECT / WHERE / ORDER BY 的用途與基本語法。
學習查詢時,建議先做「只選取」:把需要的欄顯示出來;再加入 WHERE 條件縮小範圍;最後才 ORDER BY 讓結果更易閱讀。 這種由簡到繁的建構方式,有助你快速找出錯誤位置。
此外,請把查詢視為「從現有資料產生的結果」。你不用改動原始數據表,就可以得到不同角度的輸出;這也是數據庫比單純表格更強的地方。
Check Point 5.3:SQL 關鍵字配對
5.4 Report(基本格式化)
重點
-
理解報表(Report)的定位:把查詢結果整理成易讀、可展示/列印的格式。
操作教學:
- 按「開啟本節練習」進入工具,先到 Queries 建立一個簡單查詢(例如顯示 StudentID、Name、ClassID、Score)。
- 按 Preview 確認查詢結果合理。
- 然後切換到 Reports 分頁。
-
能用「From Query Builder」把剛剛的查詢結果輸出成報表。
操作教學:
- 在 Reports 分頁,Source 選 From Query Builder。
- 按 Run Report 生成報表。
- 如你回到 Queries 修改查詢欄/條件,再回來 Run Report,報表內容會跟著變動。
-
能做最基本的格式化:加入標題、分組(group),令報表更易閱讀。
操作教學(以 ClassID 分組):
- 在 Reports 的「Group field」選擇
ClassID。 - 再次按 Run Report,觀察報表按班別分段顯示。
- 可在標題欄輸入報表名稱(例如「各班成績表」)。
- 在 Reports 的「Group field」選擇
-
分辨「查詢」與「報表」:查詢是取數據的規則;報表是輸出格式。
操作教學:
- 同一個查詢結果,可以用不同報表格式呈現(例如不同排序、不同分組)。
- 報表通常用於展示/列印;不應把報表當作儲存資料的方法。
定義:報表是把資料以整齊、可閱讀、可列印的方式呈現的輸出。
原理 / 運作:報表通常以某個查詢結果為資料來源,再套上版面格式(標題、欄順序、分組、總計等)。
例子:把 students 的查詢結果輸出為「各班成績表」,並以 ClassID 分組。
比較:查詢關心「取哪些資料」;報表關心「如何展示」。
常見錯誤:未確認查詢就先做格式,結果報表漂亮但資料錯;或把報表當作「新資料表」。
定義:分組是在報表中把同一類的紀錄放在同一段落,並在段落之間加上標題或空行。
原理 / 運作:系統會按你指定的 group field(例如 ClassID)把結果分段顯示;通常會配合排序,使同一組的紀錄相鄰。
例子:先按 ClassID 排序,再以 ClassID 分組,報表會先顯示 4A 的學生,再顯示 4B。
比較:分組不是篩選;分組會保留所有紀錄,只是把它們按類別分段呈現。
常見錯誤:忘記排序,導致同一組被拆散;或以為分組能取代 WHERE 篩選。
定義:格式化是提升可讀性的方法,例如標題、欄名清晰、排序合理、分組適當。
原理 / 運作:報表的使用者往往不是資料庫操作者,所以版面應清楚呈現「讀者想知道甚麼」。
例子:成績表通常分數由高至低;若要找及格名單,可先篩選 Score ≥ 60,再輸出報表。
比較:同一份資料,不同呈現方式可以服務不同需要(例如「總覽」vs「詳細」)。
常見錯誤:欄太多導致報表難讀;或沒有標題/日期/篩選條件說明,令讀者無法理解報表背景。
報表是一個「由資料到展示」的橋樑:你先用查詢把需要的資料整理好,再用報表把結果做成容易閱讀的格式。 在必修範圍內,你不需要做非常複雜的版面設計,但必須理解報表是「輸出」,不是「儲存」。
做報表時,建議把工作分兩步:第一步在 Queries 確保資料正確(欄、條件、排序);第二步在 Reports 做格式化(標題、分組)。 若報表內容不對,通常應回到查詢修正,而不是在報表「硬改」。
最後,請留意分組通常需要配合排序,否則同一組資料可能分散在不同位置,令報表難以閱讀。
Check Point 5.4:查詢 vs 報表
5.5 SQL:解讀簡單語句(trace & interpret)
重點
-
知道 SQL(結構化查詢語言)用來向 DBMS 發出指令;能讀懂簡單 SELECT 語句。
操作教學:
- 按「開啟本節練習」打開工具,切到 SQL Console 分頁。
- 在輸入框輸入(或貼上)一個簡單語句,例如:
-
SELECT StudentID, Name, Score FROM students;
- 按 Run (Ctrl+Enter) 觀察輸出。
-
能追蹤(trace)一條 SQL 的執行邏輯,並解釋每一段子句的作用。
操作教學(加入 WHERE + ORDER BY):
- 輸入:
-
SELECT StudentID, Name, Score FROM students WHERE ClassID = '4A' AND Score >= 60 ORDER BY Score DESC;
- 按 Run,觀察結果是否只出現 4A 及格學生,並由高分到低分排列。
- 嘗試把 ORDER BY 刪走,再 Run 一次,體會「排序」與「篩選」的分工。
-
懂得把 Query Builder 與 SQL 互相轉換:用 Query Builder 產生思路,再用 SQL 精準表達。
操作教學:
- 到 Queries 建立一個你熟悉的查詢(例如 4A 及格名單)。
- 在右側「Saved Queries」把查詢保存;然後按該查詢旁的 Load,系統會把 SQL 送到 SQL Console。
- 在 SQL Console 中閱讀這段 SQL,嘗試逐句解釋其作用(SELECT/WHERE/ORDER BY)。
-
避免常見語法錯誤:文字要加單引號、語句以分號結尾、子句順序正確。
操作教學(自我檢查清單):
- 若條件是文字:
ClassID = '4A'(有單引號)。 - 若條件是數值:
Score >= 60(通常不加引號)。 - WHERE 要放在 ORDER BY 之前。
- 每條語句最後加
;,避免一次 Run 多條時混亂。
- 若條件是文字:
定義:SQL 是一套標準語言,用來建立、修改、查詢數據庫中的資料。
原理 / 運作:你向 DBMS 發出 SQL,DBMS 解析語句後執行相應操作(例如搜尋、排序、插入資料),最後回傳結果或訊息。
例子:SELECT * FROM students; 會取出 students 表所有欄與所有紀錄。
比較:Query Builder 是圖形介面;SQL 是文字語言。兩者做的事相同,但 SQL 更精準、更通用。
常見錯誤:把 SQL 當成「背句子」;其實應理解子句的角色與組合方式。
定義:Trace 是按一個合理的次序,解釋 SQL 如何一步步產生結果。
原理 / 運作:常用的邏輯理解次序是:FROM → WHERE → SELECT → ORDER BY。先決定資料來源(FROM),再篩選(WHERE),再選欄(SELECT),最後排序(ORDER BY)。
例子:FROM students 取出學生資料 → WHERE ClassID='4A' 留下 4A → SELECT Name 只顯示姓名 → ORDER BY Name ASC 排序。
比較:寫 SQL 的次序是 SELECT…FROM…WHERE…ORDER BY…;但解釋時用 FROM→WHERE→SELECT→ORDER BY 會較清晰。
常見錯誤:把「寫法次序」當成「理解次序」,導致解釋混亂;或誤以為 ORDER BY 會先於 WHERE 執行。
定義:在 SQL 中,文字(TEXT)通常要用單引號包住;數值(INTEGER)通常不用。
原理 / 運作:單引號告訴 DBMS「這是一段文字常數」。若漏了引號,DBMS 可能把它當成欄名或關鍵字,導致錯誤。
例子:ClassID='4A' 正確;ClassID=4A 可能會出錯或被誤解。
比較:Score >= 60 是數值比較;Name='陳大文' 是文字比較。
常見錯誤:用雙引號代替單引號(在不同系統行為可能不同);或把數值也加引號而造成理解混亂。
定義:語法錯誤是指 SQL 不符合規則,DBMS 無法解析。
原理 / 運作:DBMS 解析失敗會回報錯誤位置;你應逐一檢查關鍵字、括號、引號、分號、子句順序。
例子:把 WHERE 放到 ORDER BY 後面;或漏了 AND/OR 連接條件。
比較:語法錯誤(syntax error)vs 邏輯錯誤(logic error)。前者會直接報錯;後者能跑但結果不對(例如條件寫錯)。
常見錯誤:只看報錯不看語句;或一次改很多地方,反而找不到問題源頭。建議一次只改一處並重新 Run。
在必修範圍中,你未必需要寫非常複雜的 SQL,但你必須能夠「閱讀」與「解釋」一條簡單 SELECT 語句, 尤其是 WHERE(篩選)與 ORDER BY(排序)。這種能力也能幫助你理解 Query Builder 背後的運作。
建議你用「trace」方式解釋:先指出資料來源(FROM),再說明篩選條件(WHERE)如何刪走不符合的紀錄, 接着解釋輸出欄(SELECT)為何只顯示某些欄,最後說明排序(ORDER BY)如何改變顯示次序。
當你能清楚說出每一段子句的作用,你就不容易被「記錯句子」困住;即使遇到陌生題目,也能靠理解推理出答案。
Check Point 5.5:SQL 解讀判斷題
5.6 完成品:同一個數據庫包含多張數據表
在必修練習中,你多數會以「單表」完成輸入、查詢與報表。不過,在真實情境中,一個數據庫通常包含多張數據表, 例如:一張表記錄學生,一張表記錄班別。這樣設計有助重用資料、減少重覆輸入,並讓查詢更有彈性。
本完成品示例包含兩張表:students(學生)及 classes(班別)。
你可用「開啟完成品(多表)」進入工具查看;亦可按下方按鈕在頁面內載入概覽。
完成品概覽
按「載入完成品概覽」後,這裡會顯示數據表結構與示例資料。