SQLite - WHERE 子句:精準數據檢索的關鍵
你好,有志於學習 SQLite 的同好們!我很興奮能成為你們在數據庫查詢領域的引路人。今天,我們將深入探討 SQLite 工具箱中最強大的工具之一:WHERE 子句。在這個教程結束之時,你將能夠像專業人士一樣過濾數據,讓你的朋友和未來的同事都對你刮目相看!
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
的表,其中有 id
、name
和 age
列。我們想要找到所有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
運算符來組合兩個條件:
-
age = 18
:學生必須18歲。 -
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