SQLite - WHERE 子句:精準數據檢索的關鍵

你好,有志於學習 SQLite 的同好們!我很興奮能成為你們在數據庫查詢領域的引路人。今天,我們將深入探討 SQLite 工具箱中最強大的工具之一:WHERE 子句。在這個教程結束之時,你將能夠像專業人士一樣過濾數據,讓你的朋友和未來的同事都對你刮目相看!

SQLite - WHERE Clause

What is the WHERE Clause?(WHERE 子句是什麼?)

在我們進入詳細內容之前,讓我們從基礎開始。想像你有一個充滿書籍的巨大圖書館(你的數據庫),現在,如果你想要找到所有在2010年後出版的懸疑小說,WHERE 子句就會派上用場!它就像一個神奇的過濾器,幫助你精確地找到你正在尋找的數據。

WHERE 子句在 SQLite 中用於指定必須滿足的條件,以便數據在查詢結果中被返回。這就像告訴數據庫:“嘿,我只想要看到這些特定的信息!”

Syntax: The Grammar of WHERE(語法:WHERE 子句的結構)

現在,讓我們來看看 WHERE 子句的語法。別擔心,起先它可能看起來有點令人却步,但我們會一步步分解!

SELECT column1, column2, ...
FROM table_name
WHERE condition;

這裡的每一部分意味著:

  • SELECT:在這裡你指定你想要看到的列。
  • FROM:這告訴 SQLite 去哪個表裡查找。
  • WHERE:這就是發揮魔法的地方!你會在這裡放入你的條件。

條件可以由一個或多個表達式組成,可以包括:

  • 比較運算符(=, <>, <, >, <=, >=)
  • 邏輯運算符(AND, OR, NOT)
  • 特殊運算符(BETWEEN, LIKE, IN)

讓我們看一些例子,讓這些概念變得清晰!

Examples: WHERE in Action(範例:WHERE 子句的應用)

Example 1: Basic Comparison(範例 1:基本比較)

假設我們有一個名為 students 的表,其中有 idnameage 列。我們想要找到所有18歲的學生。

SELECT name
FROM students
WHERE age = 18;

這個查詢將返回所有恰好18歲的學生的名字。簡單吧?

Example 2: Multiple Conditions(範例 2:多個條件)

現在,如果我們想要找到18歲並且名字以 'A' 開頭的學生該怎麼辦?

SELECT name, age
FROM students
WHERE age = 18 AND name LIKE 'A%';

這個查詢使用 AND 運算符來組合兩個條件:

  1. age = 18:學生必須18歲。
  2. name LIKE 'A%':學生的名字必須以 'A' 開頭。% 是一個萬用字符,意味著“任何字符都可以跟在後面”。

Example 3: Range Queries(範例 3:範圍查詢)

如果我們想要找到年齡在18到22歲之間的學生該怎麼辦?

SELECT name, age
FROM students
WHERE age BETWEEN 18 AND 22;

BETWEEN 運算符是一種方便指定範圍的方法。這個查詢將返回所有年齡為18、19、20、21或22歲的學生。

Example 4: IN Operator(範例 4:IN 運算符)

假設我們想要找到特定年級的學生:

SELECT name, grade
FROM students
WHERE grade IN (9, 10, 11);

IN 運算符允許你指定多個值來對比。這個查詢將返回9、10或11年級的學生。

Example 5: Combining Different Types of Conditions(範例 5:組合不同類型的條件)

現在,讓我們把所有東西放在一起!我們想要找到:

  • 要麼18歲,要麼12年級的學生
  • 且名字以 'A' 或 'B' 開頭
SELECT name, age, grade
FROM students
WHERE (age = 18 OR grade = 12)
AND (name LIKE 'A%' OR name LIKE 'B%');

這個查詢展示了如何使用括號來組合條件並結合不同類型的比較。

Common WHERE Clause Operators(常見 WHERE 子句運算符)

以下是最常用的運算符表格,你將與 WHERE 子句一起使用:

運算符 描述 範例
= 等於 WHERE age = 18
<> 或 != 不等於 WHERE grade <> 12
> 大於 WHERE score > 90
< 小於 WHERE price < 50
>= 大於或等於 WHERE quantity >= 100
<= 小於或等於 WHERE year <= 2020
BETWEEN 在一個包含範圍內 WHERE age BETWEEN 18 AND 25
LIKE 模式匹配 WHERE name LIKE 'J%'
IN 指定多個值 WHERE country IN ('USA', 'UK', 'Canada')
AND 組合條件(所有必須為真) WHERE age > 18 AND grade = 12
OR 組合條件(至少一個必須為真) WHERE subject = 'Math' OR subject = 'Science'
NOT 否定一個條件 WHERE NOT grade = 12

Conclusion: Your New Data Filtering Superpower(結論:你的新數據過濾超能力)

恭喜你!你剛剛解鎖了 SQLite 武器庫中的一個強大工具。WHERE 子句是你精準數據檢索的通行證,讓你能在數據的海洋中精選出你想要的精華。

記住,熟練來自練習。試著創建你自己的數據庫並嘗試使用不同的 WHERE 子句。很快,你將能夠像一個有經驗的專業人士一樣查詢數據!

在你繼續你的 SQLite 旅程時,請記住 WHERE 子句只是個開始。還有一個充滿高級查詢技巧的世界等待你去探索。但現在,給自己一個鼓勵——你已經朝著成為數據庫巫師的方向邁出了巨大的一步!

愉快地查詢,願你的數據總是過濾得恰到好處!

Credits: Image by storyset