PostgreSQL - WHERE 子句:數據過濾的入門

你好,未來的數據巫師們!今天,我們將踏上一段令人興奮的旅程,進入 PostgreSQL 的世界,特別專注於 WHERE 子句。作為你們親切鄰居的計算機老師,我將帶領你們通過大量的範例和解釋來進行這次冒險。所以,請系好安全帶,讓我們一起跳水吧!

PostgreSQL - Where Clause

WHERE 子句是什麼?

在我們深入細節之前,讓我們先了解 WHERE 子句到底是什麼。想像你在一個充滿書籍(我們的數據)的巨大圖書館(我們的數據庫)裡。現在,你想找到所有關於龍的書。你會一一查看每一本書嗎?當然不會!這就是我們的英雄——WHERE 子句的用武之地!它幫助我們在數據庫中精確過濾出我們想要尋找的內容。

WHERE 子句就像一個神奇的過濾器,讓我們能夠為從表中檢索的行指定條件。這是一個非常強大的工具,可以節省你的時間,並使你的數據庫查詢更加高效。

語法:WHERE 子句的藍圖

現在,讓我們來看看 WHERE 子句的基本語法:

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

別擔心這看起來有點令人害怕。把它當成一個食譜來看待:

  1. SELECT:選擇你想要的食材(列)
  2. FROM:選擇你使用的食譜(表)
  3. WHERE:指定你的飲食限制(條件)

範例:讓 WHERE 子句活起來

範例 1:基本比較

我們從一個簡單的範例開始。假設我們有一個名為 students 的表,其中包含列 idnameage。我們想找到所有 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