一、使用WHERE子句
SELECT prod_name, prod_price FROM Products WHERE prod_price = 3.49;
輸出▼ prod_name prod_price ------------------- ---------- Fish bean bag toy 3.49 Bird bean bag toy 3.49 Rabbit bean bag toy 3.49
分析▼
這條語句從products表中檢索兩個列,但不返回所有行,只返回prod_price值為3.49的行
提示:SQL過濾與應用過濾
數據也可以在應用層過濾。為此,SQL的SELECT語句為客戶端應用檢索出超過實際所需的數據,然后客戶端代碼對返回數據進行循環,提
取出需要的行。
通常,這種做法極其不妥。優化數據庫后可以更快速有效地對數據進行過濾。而讓客戶端應用(或開發語言)處理數據庫的工作將會極大地
影響應用的性能,并且使所創建的應用完全不具備可伸縮性。此外,如果在客戶端過濾數據,服務器不得不通過網絡發送多余的數據,這將
導致網絡帶寬的浪費。
提示:何時使用引號
單引號用來限定字符串。如果將值與字符串類型
的列進行比較,就需要限定引號。用來與數值列進行比較的值不用引號。
警告:WHERE子句的位置
在同時使用ORDER BY和WHERE子句時,應該讓ORDER BY位于WHERE之后,否則將會產生錯誤
?
?
?二、WHERE子句操作符
?
警告: 操作符兼容
表4-1中列出的某些操作符是冗余的(如< >與!=相同,!<相當于>=)。并非所有DBMS都支持這些操作符。想確定你的DBMS支持哪些操
作符,請參閱相應的文檔。
?
?
?
三、范圍值檢查
?
SELECT prod_name, prod_price FROM Products WHERE prod_price BETWEEN 5 AND 10;
輸出▼ prod_name prod_price ------------------- ---------- 8 inch teddy bear 5.99 12 inch teddy bear 8.99 King doll 9.49 Queen doll 9.49
分析▼
從這個例子可以看到,在使用BETWEEN時,必須指定兩個值——所需范圍的低端值和高端值。這兩個值必須用AND關鍵字分隔。BETWEEN匹
配范圍中所有的值,包括指定的開始值和結束值。
? ?
?
?
四、空值檢查
?
NULL
無值(no value),它與字段包含0、空字符串或僅僅包含空格不同。
確定值是否為NULL,不能簡單地檢查是否= NULL。SELECT語句有一個特殊的WHERE子句,可用來檢查具有NULL值的列。這個WHERE子句就
是IS NULL子句。其語法如下:
SELECT prod_name FROM Products WHERE prod_price IS NULL;
警告:NULL和非匹配
通過過濾選擇不包含指定值的所有行時,你可能希望返回含NULL值的行。但是這做不到。因為未知(unknown)有特殊的含義,數據庫不知
道它們是否匹配,所以在進行匹配過濾或非匹配過濾時,不會返回這些結果。過濾數據時,一定要驗證被過濾列中含NULL的行確實出現在返回的數據中。
?