PostgreSQL - WHERE 子句:數據過濾的入門
你好,未來的數據巫師們!今天,我們將踏上一段令人興奮的旅程,進入 PostgreSQL 的世界,特別專注於 WHERE 子句。作為你們親切鄰居的計算機老師,我將帶領你們通過大量的範例和解釋來進行這次冒險。所以,請系好安全帶,讓我們一起跳水吧!
WHERE 子句是什麼?
在我們深入細節之前,讓我們先了解 WHERE 子句到底是什麼。想像你在一個充滿書籍(我們的數據)的巨大圖書館(我們的數據庫)裡。現在,你想找到所有關於龍的書。你會一一查看每一本書嗎?當然不會!這就是我們的英雄——WHERE 子句的用武之地!它幫助我們在數據庫中精確過濾出我們想要尋找的內容。
WHERE 子句就像一個神奇的過濾器,讓我們能夠為從表中檢索的行指定條件。這是一個非常強大的工具,可以節省你的時間,並使你的數據庫查詢更加高效。
語法:WHERE 子句的藍圖
現在,讓我們來看看 WHERE 子句的基本語法:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
別擔心這看起來有點令人害怕。把它當成一個食譜來看待:
- SELECT:選擇你想要的食材(列)
- FROM:選擇你使用的食譜(表)
- WHERE:指定你的飲食限制(條件)
範例:讓 WHERE 子句活起來
範例 1:基本比較
我們從一個簡單的範例開始。假設我們有一個名為 students
的表,其中包含列 id
、name
和 age
。我們想找到所有 18 歲的學生。
SELECT name
FROM students
WHERE age = 18;
這個查詢將返回所有恰好 18 歲的學生的名字。這裡的 =
誌號就像是在說“完全等於”。
範例 2:使用運算符
WHERE 子句不僅限於等於。我們可以使用各種運算符來創建更複雜的條件。讓我們找到所有超過 20 歲的學生:
SELECT name, age
FROM students
WHERE age > 20;
這將給我們所有超過 20 歲的學生的名字和年齡。>
運算符意味著“大於”。
範例 3:使用 AND 進行多個條件
如果我們想找到超過 20 歲且 id 小於 100 的學生怎麼辦?我們可以使用 AND 運算符:
SELECT name, age, id
FROM students
WHERE age > 20 AND id < 100;
這個查詢將返回滿足兩個條件的學生的名字、年齡和 id。
範例 4:使用 OR 進行可選條件
有時我們想找到滿足兩個條件之一的行。讓我們找到 18 歲或 id 為 42 的學生:
SELECT name, age, id
FROM students
WHERE age = 18 OR id = 42;
這將返回 18 歲或 id 為 42(或兩者皆符合)的學生。
範例 5:使用文本數據
WHERE 子句不僅限於數字。我們也可以對文本數據使用它。讓我們找到所有名字以 'A' 開頭的學生:
SELECT name
FROM students
WHERE name LIKE 'A%';
LIKE
運算符允許我們使用模式匹配。%
是一個萬用字符,匹配任何字符序列。
範例 6:使用 IN 進行多個值
如果我們想找到年齡為 18、19 或 20 歲的學生怎麼辦?我們可以使用 IN 運算符,而不是寫一個冗長的 OR 語句:
SELECT name, age
FROM students
WHERE age IN (18, 19, 20);
這個查詢將返回所有年齡為 18、19 或 20 歲的學生。
範例 7:使用日期
PostgreSQL 也允許我們在 WHERE 子句中使用日期。想像我們在 students
表中有一個名為 enrollment_date
的列:
SELECT name, enrollment_date
FROM students
WHERE enrollment_date > '2023-01-01';
這將返回所有在 2023 年 1 月 1 日之後入學的學生。
常見 WHERE 子句運算符
這裡有一個常用運算符的便捷表格:
運算符 | 描述 | 範例 |
---|---|---|
= | 等於 | WHERE age = 18 |
> | 大於 | WHERE age > 20 |
< | 小於 | WHERE id < 100 |
>= | 大於或等於 | WHERE age >= 18 |
<= | 小於或等於 | WHERE id <= 1000 |
<> 或 != | 不等於 | WHERE age <> 25 |
AND | 邏輯 AND | WHERE age > 20 AND id < 100 |
OR | 邏輯 OR | WHERE age = 18 OR id = 42 |
IN | 匹配列表中的任何值 | WHERE age IN (18, 19, 20) |
LIKE | 模式匹配 | WHERE name LIKE 'A%' |
BETWEEN | 在範圍內 | WHERE age BETWEEN 18 AND 25 |
IS NULL | 是空值 | WHERE phone IS NULL |
結論:你的新超能力
恭喜你!你剛剛在你的 PostgreSQL 旅程中解鎖了一個新的超能力。WHERE 子句就像一個可靠的副手,將幫助你過濾和找到恰好你需要數據。記住,熟練需要練習,所以不要害怕嘗試不同的條件和運算符。
當我們結束時,我想到一個學生曾經告訴我,“學習 WHERE 子句就像在數據的世界中使用放大鏡。”他說得對!你現在有了工具,可以精確地聚焦你需要的信息。
繼續探索,繼續查詢,最重要的是,繼續在數據庫中玩得開心。直到下一次,快樂編程!
Credits: Image by storyset