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