WHERE 查詢子句 (SQL WHERE Clause)

我們可以進一步在 SELECT 查詢語句使用 WHERE 關鍵字搭配運算子來取出「符合條件」的紀錄值。

WHERE 語法 (SQL WHERE Syntax)

SELECT table_column1, table_column2···
FROM table_name
WHERE column_name operator value;

WHERE 子句實例 (Example)

假設我們想從下面的「customers」資料表中查詢「王二」的資料:
C_Id Name City Address Phone
1 張一 台北市 XX路100號 02-12345678
2 王二 新竹縣 YY路200號 03-12345678
3 李三 高雄縣 ZZ路300號 07-12345678
4 陳四 台北市 AA路400號 02-87654321

我們可以下「取出表中姓名欄位值是王二」如此條件的 SELECT 敘述句:
SELECT * FROM customers WHERE Name = '王二';

查詢的結果如下:
C_Id Name City Address Phone
2 王二 新竹縣 YY路200號 03-12345678

查詢條件中的「字串值」需要用單引號「''」包住,否則會出現錯誤;另一方面,對於數值型別則不可以加上引號,否則也會出現錯誤。(被單引號圍住的字元即表示其資料型別為字串,而有些資料庫也接受你使用雙引號)

多個查詢條件式

你可以使用「AND」或「OR」運算子同時下達多個條件:
AND 運算子表示其左右兩條件皆需符合
OR 運算子表示其左右兩條件至少需符合一個
SELECT table_column1, table_column2···
FROM table_name
WHERE column_name1 operator value1
AND column_name2 operator value2
[AND|OR]······;

舉個例子,我們想在 customers 資料表中查詢住在台北市而且薪水大於5萬的顧客姓名及連絡電話:
C_Id Name City Address Phone Salary
1 張一 台北市 XX路100號 02-12345678 25000
2 王二 新竹縣 YY路200號 03-12345678 30000
3 李三 高雄縣 ZZ路300號 07-12345678 30000
4 陳四 台北市 AA路400號 02-87654321 50000

SQL 查詢...
SELECT Name, Phone
FROM table_name
WHERE City = '台北市'
AND Salary >= 50000;

查詢的結果如下:
Name Phone
陳四 02-87654321
利用圓括號「()」可以來執行更複雜的查詢條件,圓括號內圍住的的條件式會優先判斷。例如:
WHERE 條件一 AND (條件二 OR 條件三)
此SQL陳述式會優先對條件二與條件三作OR邏輯運算,所得結果再接著和條件一作AND邏輯運算。