SQL 基礎查詢

進階

SQL 查詢骨架:SELECT 欄位 FROM 表 WHERE 條件 ORDER BY 欄位 DESC。* 代表全部欄位;文字值用單引號 '3A';AND/OR 組合條件;DESC 降冪、ASC 升冪。

適合:中三資訊及通訊科技 · 單元:資料庫入門 · 建議學習路徑第 6/13 課

學完呢課,你會識:
  • SQL 是跟資料庫溝通的標準語言;查詢骨架:SELECT 欄位 FROM 表。
  • * 代表全部欄位;只選需要的欄位,結果更清爽。
  • WHERE 篩選記錄:文字值加單引號 '3A',數字直接寫;相等只用一個 =。
文體:編程教學課有聲朗讀

文體小知識:編程教學課每個概念都配一段可以親手試的代碼例子,照住輸入、改一改,最快學會。

資訊及通訊科技Information & Communication Technology

§課文原文 Passage

1SQL(Structured Query Language,結構化查詢語言)是跟資料庫溝通的標準語言:你用一句 SQL 講清楚要什麼,資料庫負責找出來。最基本的句式:SELECT 欄位 FROM 資料表。例如 SELECT * FROM students; 中,星號 * 代表全部欄位,整句意思是「由 students 表取出所有記錄的所有欄位」。

2只想看部分欄位,就把欄位名逐一列出:SELECT name, score FROM students; 只返回姓名和分數兩列。只想看部分記錄,就加 WHERE 條件:SELECT * FROM students WHERE class = '3A'; 只返回 3A 班的行。WHERE 可以用比較運算子 =、>、<、>=、<=,也可以用 AND、OR 組合幾個條件。

3結果還可以排序:ORDER BY score DESC 把分數由高至低排(DESC = 降冪),ASC 是升冪(不寫時的預設)。想只看頭幾名,排序後再 LIMIT 3 就返回最高三人。一句完整的查詢可以同時用齊這些部件。

4SQL 有一個書寫慣例:關鍵字(SELECT、FROM、WHERE)用大寫,表名欄位名用原樣,文字值用單引號 '3A',數字值直接寫 80。看懂一句 SQL 的秘訣是按結構拆:先看 SELECT 拿什麼欄位,再看 FROM 哪張表,最後看 WHERE 和 ORDER BY 怎樣篩選和排序。

1重點摘要 Summary

SQL 查詢骨架:SELECT 欄位 FROM 表 WHERE 條件 ORDER BY 欄位 DESC。* 代表全部欄位;文字值用單引號 '3A';AND/OR 組合條件;DESC 降冪、ASC 升冪。

2生字卡 Vocabulary

S
SQL結構化查詢語言

跟資料庫溝通的標準語言,用於查詢、新增、修改和刪除資料。

S
SELECT選取關鍵字

指定要返回哪些欄位的 SQL 關鍵字,SELECT * 表示全部欄位。

F
FROM來源表關鍵字

指定資料來自哪一張資料表的 SQL 關鍵字。

W
WHERE條件篩選

設定條件只返回符合的記錄,例如 WHERE score >= 80。

C
Comparison operator比較運算子

WHERE 中比較用的符號:=、>、<、>=、<=;SQL 判斷相等只用一個 =。

A
AND / OR邏輯組合

組合多個條件:AND 要求全部成立,OR 只要隨便中一個成立。

O
ORDER BY排序

把結果按某欄位排序,DESC 由高至低,ASC 由低至高(預設)。

L
LIMIT限制筆數

只返回結果的頭幾筆,例如排序後 LIMIT 3 取最高三名。

W
Wildcard *星號萬用字

SELECT 後的星號,代表資料表的全部欄位。

3逐步講解 Steps

  1. 第一句 SQL:全表查詢SQL(結構化查詢語言)是與資料庫溝通的標準語言:你用一句 SQL 講清楚要什麼,資料庫負責找出來。第一句:SELECT * FROM students;,星號代表所有欄位。若 students 表有 5 筆記錄(小明 3A 85、Mary 3B 90 等),這句返回全部 5 行、全部欄位。SELECT 指定要什麼欄位,FROM 指定哪張表,句尾分號結束語句;SQL 關鍵字慣例用大寫,方便與表名、欄位名區分。
  2. 選擇欄位與篩選記錄只取需要的欄位:SELECT name, score FROM students; 只返回姓名與分數兩列,班別、學號不出現,結果清爽。只要部分記錄:加 WHERE 條件,SELECT * FROM students WHERE class = '3A'; 只返回 3A 班的行。注意文字值必須加單引號 '3A',數字則直接寫 score = 85。比較運算子有 =、>、<、>=、<=,例如 WHERE score >= 80 便取出 80 分或以上的所有記錄。
  3. AND 組合條件AND 要求兩個條件同時成立:SELECT * FROM students WHERE class = '3A' AND score >= 80; 只返回 3A 班且 80 分以上的行。例如 3A 班小明 85 分入選;3B 班 Mary 90 分雖然分數足夠,但班別不合,被篩走;3A 班 60 分的同學同樣落選。組合條件是精準查詢的核心:OR 則是任一條件成立即返回。書寫時每個條件必須獨立完整,連接詞放在兩個條件之間,層次分明。
  4. ORDER BY 排序ORDER BY 把結果排序:SELECT name, score FROM students ORDER BY score DESC; 使全體學生按分數由高至低排列,Mary 90 排第一、小明 85 第二。DESC 是降冪,ASC 是升冪,不寫時預設 ASC。排序不會改變資料庫內儲存的資料,只改變這一次查詢的顯示次序。想找前幾名,排序之後再加 LIMIT:ORDER BY score DESC LIMIT 3 只返回最高三人,如同頒獎台只站三個人。
  5. 砌一句完整查詢四個部件組合出完整查詢:SELECT name, score FROM students WHERE score >= 80 ORDER BY score DESC LIMIT 3;。逐段解讀:SELECT name, score 取姓名與分數;FROM students 資料來自學生表;WHERE score >= 80 只要 80 分以上;ORDER BY score DESC 由高至低排;LIMIT 3 只看頭三名。讀 SQL 的秘訣就是按 SELECT、FROM、WHERE、ORDER BY、LIMIT 的次序逐段拆解,每段只回答一個問題。
  6. 書寫慣例與格式SQL 的書寫慣例:關鍵字 SELECT、FROM、WHERE、ORDER BY 用大寫;表名與欄位名照原樣寫;文字值用單引號 '3A',數字值直接寫 80;句尾加分號。這些慣例並非語法強制,多數資料庫接受小寫關鍵字,但大寫關鍵字令語句結構一目了然,團隊合作時尤其重要。縮排亦有幫助:長查詢把 WHERE 與 ORDER BY 另起新行,可讀性大增,修改時也不易看漏條件。
  7. 資料庫在生活中的應用資料庫無處不在:學校的學籍系統、圖書館的借閱紀錄、網店訂單、串流平台的影片清單,背後都是一張張資料表。你瀏覽購物網站時點擊「價格由低至高」,網站執行的正是 ORDER BY price ASC;「只看 4 星以上」就是 WHERE rating >= 4。學懂 SELECT、WHERE、ORDER BY 之後,便明白幾乎所有查詢介面的底層邏輯,這是 ICT 課程中最貼近真實工作的技能之一。

4圖解 Diagrams

SQL 查詢:同資料庫講嘢 SELECTSELECT 姓名, 班別FROM studentsWHERE 班別 = "3A";意思:喺 students 表入面,揀出所有 3A 班嘅姓名同班別三隻關鍵字:SELECT 揀咩欄位 · FROM 邊張表 · WHERE 過濾條件SQL 係同資料庫溝通嘅標準語言——一句話代替人手逐格搵試吓:SELECT * 意思係「全部欄位」;加 ORDER BY 可以排序
圖 1:SQL SELECT 查詢

5例題示範 Example

例題:students 表有欄位 student_id、name、class、score。寫一句 SQL:列出 3B 班 70 分或以上的學生姓名和分數,分數由高至低排列。

  1. 決定欄位:要姓名和分數 → SELECT name, score。
  2. 決定來源表:資料在學生表 → FROM students。
  3. 決定條件:班別 3B 而且 70 分以上 → WHERE class = '3B' AND score >= 70(文字 '3B' 加引號,數字 70 不用)。
  4. 決定排序:由高至低 → ORDER BY score DESC。組合:SELECT name, score FROM students WHERE class = '3B' AND score >= 70 ORDER BY score DESC;
  5. 答案:SELECT name, score FROM students WHERE class = '3B' AND score >= 70 ORDER BY score DESC;

6常見錯誤 Mistakes

✗ 「WHERE class = 3A 就可以,不用引號。」
✓ 文字值必須加單引號:WHERE class = '3A';不加會當成欄位名而出錯。數字值(80)才不用引號。
✗ 「判斷相等寫 WHERE score == 85。」
✓ SQL 只用一個等號 = 判斷相等;== 是 Python 等程式語言的寫法,在 SQL 會出語法錯誤。
✗ 「SELECT name, score FROM student; 表名差不多就行。」
✓ 表名必須一字不差:表叫 students 就不能寫 student,否則出「table not found」;欄位名同理。
✗ 「AND 和 OR 隨便用,結果差不多。」
✓ 差很遠:WHERE class = '3A' AND score >= 80 要求兩個條件同時成立;換成 OR 連 3B 班 90 分也會入選。
✗ 「ORDER BY score 是由大排到小。」
✓ 不寫方向預設是 ASC 升冪(小至大);要由大至小必須明確寫 DESC。

75 題快測 Quick check

Q1SELECT * FROM students; 中的 * 代表什麼?

Q2只返回 80 分以上的記錄,應加什麼子句?A. ORDER BY B. WHERE score >= 80 C. SELECT 80

Q3ORDER BY score DESC 中 DESC 的意思是什麼?

Q4WHERE class = '3A' AND score >= 80 的結果是哪些記錄?

Q5寫一句 SQL:列出 students 表全部學生的姓名,按姓名字母順序排列。

8重點回顧 Recap

  • SQL 是跟資料庫溝通的標準語言;查詢骨架:SELECT 欄位 FROM 表。
  • * 代表全部欄位;只選需要的欄位,結果更清爽。
  • WHERE 篩選記錄:文字值加單引號 '3A',數字直接寫;相等只用一個 =。
  • AND 要求全部條件成立,OR 任何一個成立即可。
  • ORDER BY 排序:DESC 由高至低、ASC 由低至高(預設);LIMIT 取頭幾筆。

同級其他科

同一科其他級別