WHERE子句
在我們使用資料庫時,通常只會根據特定條件提取表資料的子集。只檢索所需資料需要指定搜尋條件(search criteria),搜尋條件也稱為過濾條件(filtercondition)。
SELECT name, age FROM tab1 WHERE age=18;
返回age=18的行
WHERE子句支援的操作符
= 等於
<> 不等於
!= 不等於
< 小於
<= 小於等於
大於
= 大於等於
BETWEEN 在指定的兩個值之間
eg:
SELECT name,age FROM tab1 WHERE age>10; //獲取age大於10的資料
SELECT name,age FROM tab1 WHERE age BETWEEN 10 AND 18; //獲取age在10到18之間的資料,包括10和18
另一個特殊子句
IS NULL用來返回為空的資料
SELECT name, age FROM WHERE name IS NULL;
組合WHERE子句
使用AND或者OR子句,組合WHERE子句
SELECT name,age FROM tab1 WHERE age=10 AND name='aaa'; //查詢age=10並且name='aaa'的資料
SELECT name,age FROM tab1 WHERE age=10 OR age=19; //查詢age=10或者age=19的資料
AND和OR可以同時使用,不過AND的優先順序高於OR,所以會先處理AND操作符,另外可以用括號分組,明確的顯示優先順序.
IN操作符
指定條件範圍,範圍中的每個條件都可以進行匹配。IN取合法值的由逗號分隔的清單,全都括在圓括號中。
SELECT name,age FROM tab1 WHERE age IN (18,19,20); //查詢age在18,19或20的所有資料,功能與OR相似.
IN相比OR的好處:
- 在使用長的合法選項清單時,IN操作符的語法更清楚且更直觀。
- 在使用IN時,計算的次序更容易管理
- IN操作符一般比OR操作符清單執行更快
- IN的可以包含其他SELECT語句,使得能夠更動態地建立WHERE子句
NOT操作符
否定它之後所跟的任何條件。
SELECT name,age FROM tab1 WHERE age NOT IN (18,19,20); //查詢age不在18,19或20的所有資料,功能與OR相似.
使用萬用字元過濾
LIKE操作符
%萬用字元
%可以匹配表示任何字元出現任意次數
SELECT name FROM tab1 WHERE name LINK 'a%'; //可以匹配任何name以a開頭的資料
_萬用字元
下劃線(_)。下劃線只匹配單個字元,用法同%
注意
- 不要過度使用萬用字元。如果其他操作符能達到相同的目的,應該使用其他操作符。
- 儘量不要把它們用在搜尋模式的開始處,因為速度會很慢