目錄匯總:SQL 零基礎入門教程
數據庫表一般包含大量的數據,很少需要檢索表中的所有行。通常只會根據特定操作或報告的需要提取表數據的子集。只檢索所需數據需要指定搜索條件(search criteria),搜索條件也稱為過濾條件(filter condition)。
在 SELECT 語句 中,數據根據 WHERE
子句中指定的搜索條件進行過濾。WHERE
子句在表名(FROM 子句)之后給出,如下所示:
輸入▼
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;
分析▼
這條語句從 products
表中檢索兩個列,但不返回所有行,只返回 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
這個示例使用了簡單的相等檢驗:檢查這一列的值是否為指定值,據此過濾數據。不過,SQL 不只能測試等於,還能做更多的事情。
提示:有多少個 0?
你在練習這個示例時,會發現顯示的結果可能是 3.49、3.490、3.4900 等。出現這樣的情況,往往是因為 DBMS 指定了所使用的數據類型及其默認行為。所以,如果你的輸出可能與教程上的有點不同,不必焦慮,畢竟從數學角度講,3.49 和 3.4900 是一樣的。
提示:SQL 過濾與應用過濾
數據也可以在應用層過濾。為此,SQL 的 SELECT 語句為客戶端應用檢索出超過實際所需的數據,然后客戶端代碼對返回數據進行循環,提取出需要的行。
通常,這種做法極其不妥。優化數據庫后可以更快速有效地對數據進行過濾。而讓客戶端應用(或開發語言)處理數據庫的工作將會極大地影響應用的性能,並且使所創建的應用完全不具備可伸縮性。此外,如果在客戶端過濾數據,服務器不得不通過網絡發送多余的數據,這將導致網絡帶寬的浪費。
注意:WHERE
子句的位置
在同時使用 ORDER BY 和 WHERE
子句時,應該讓 ORDER BY
位於 WHERE
之后,否則將會產生錯誤。
請參閱
(完)