6.2? 組合查詢條件
在前一章提到的WHERE子句進行查詢時,WHERE子句后面的搜索條件只是單一的。實際上,可以通過布爾運算符AND和OR,將多個單獨的搜索條件結合在一個WHERE子句中,形成一個復合的搜索條件。當對復合搜索條件求值時,DBMS對每個單獨的搜索條件求值,然后執行布爾運算來決定整個WHERE子句的值是True還是False。
6.2.1? AND運算符
在WHERE子句中,AND運算符表示“與”的關系,即AND在結合兩個布爾表達式時,只有在兩個表達式都為True時,才傳回True,從而使整個WHERE子句求值為True。AND運算符的真值表如表6-2所示。
表6-2?AND真值表
表?達?式?一 | 表?達?式?二 | 結????果 |
True | True | True |
True | False | False |
True | NULL | NULL |
False | False | False |
False | NULL | False |
NULL | NULL | NULL |
注意?NULL與Fasle進行AND運算時,結果為False而不是NULL。兩個表達式的順序不影響其結果,也就是True和False取AND運算的結果與False和True的結果相同。
語法如下。
SELECT??column FROM ??table_name WHERE???? ?condition1 AND??????? ?condition2 |
在WHERE子句中,通過AND運算符連接了兩個查詢條件condition1和condition2。只有同時滿足這兩個條件的記錄,WHERE子句求值為True,此時DBMS將當前記錄包括在結果表中;如果WHERE子句求值為False或NULL,則DBMS排除該值。
實例1? 使用AND運算符實現條件查詢
從TEACHER表中查詢年齡(AGE)大于30,且性別(TSEX)為女的所有教師的所有信息。實例代碼:
SELECT??* FROM ??TEACHER WHERE? ??AGE >30 AND???TSEX='女' ORDER BY??? ?AGE |
運行結果如圖6.1所示。
![]() |
圖6.1? 年齡大于30歲的女教師 |
當然,在一個WHERE子句中,也可以同時使用多個AND運算符連接多個查詢條件。這時,只有滿足所有查詢條件的記錄,才被包括在結果表中。
實例2? 使用多個AND運算符實現條件查詢
從TEACHER表中查詢年齡(AGE)大于30,且性別(TSEX)為女的計算機系教師的所有信息。實例代碼:
SELECT??* FROM ??TEACHER WHERE? ??AGE >30 AND???TSEX='女' AND???DNAME=’計算機’ ORDER BY?? ?AGE |
運行結果如圖6.2所示。
![]() |
圖6.2? 計算機系中年齡大于30歲的女教師 |