mysql必知必會--過 濾 數 據

使用 WHERE 子句

數據庫表通常包含大量的數據,不多須要檢索表中全部行。一般只
會根據特定操做或報告的須要提取表數據的子集。只檢索所需數據須要
指定搜索條件(search criteria),搜索條件也稱爲過濾條件(filter
condition)。
在 SELECT 語句中,數據根據 WHERE 子句中指定的搜索條件進行過濾。
WHERE 子句在表名( FROM 子句)以後給出,

這條語句從 products 表中檢索兩個列,但不返回全部行,只返
回 prod_price 值爲 2.50 的行數據庫

這個例子採用了簡單的相等測試:它檢查一個列是否具備指定的值,
據此進行過濾。可是SQL容許作的事情不只僅是相等測試服務器

SQL過濾與應用過濾 數據也能夠在應用層過濾。爲此目
的,SQL的 SELECT 語句爲客戶機應用檢索出超過實際所需的
數據,而後客戶機代碼對返回數據進行循環,以提取出須要
的行。網絡

一般,這種實現並不使人滿意。所以,對數據庫進行了優化,
以便快速有效地對數據進行過濾。讓客戶機應用(或開發語言)
處理數據庫的工做將會極大地影響應用的性能,而且使所建立
的應用徹底不具有可伸縮性。此外,若是在客戶機上過濾數據,
服務器不得不經過網絡發送多餘的數據,這將致使網絡帶寬的
浪費。性能

WHERE 子句的位置 在同時使用 ORDER BY 和 WHERE 子句時,應
該讓 ORDER BY 位於 WHERE 以後,不然將會產生錯誤測試

WHERE 子句操做符

咱們在關於相等的測試時看到了第一個 WHERE 子句,它肯定一個列是
否包含特定的值。MySQL支持表6-1列出的全部條件操做符
優化

不匹配檢查

如下例子列出不是由供應商 1003 製造的全部產品

什麼時候使用引號單引號用來限定字符串。若是將值與串類型的
列進行比較,則須要限定引號。用來與數值列進行比較的值不
用引號。設計

下面是相同的例子,其中使用 != 而不是 <> 操做符:
3d

範圍值檢查

爲了檢查某個範圍的值,可以使用 BETWEEN 操做符。其語法與其餘 WHERE
子句的操做符稍有不一樣,由於它須要兩個值,即範圍的開始值和結束值。
例如, BETWEEN 操做符可用來檢索價格在5美圓和10美圓之間或日期在指
定的開始日期和結束日期之間的全部產品blog

下面的例子說明如何使用 BETWEEN 操做符,它檢索價格在5美圓和10
美圓之間的全部產品
開發

從這個例子中能夠看到,在使用 BETWEEN 時,必須指定兩個值
——所需範圍的低端值和高端值。這兩個值必須用 AND 關鍵字
分隔。 BETWEEN 匹配範圍中全部的值,包括指定的開始值和結束值

空值檢查

在建立表時,表設計人員能夠指定其中的列是否能夠不包含值。在
一個列不包含值時,稱其爲包含空值 NULL

NULL 無值(no value),它與字段包含 0 、空字符串或僅僅包含
空格不一樣

SELECT 語句有一個特殊的 WHERE 子句,可用來檢查具備 NULL 值的列。
這個 WHERE 子句就是 IS NULL 子句。其語法以下:

這條語句返回沒有價格(空 prod_price 字段,不是價格爲 0 )的全部
產品,因爲表中沒有這樣的行,因此沒有返回數據

NULL 與不匹配 在經過過濾選擇出不具備特定值的行時,你
可能但願返回具備 NULL 值的行。可是,不行。由於未知具備
特殊的含義,數據庫不知道它們是否匹配,因此在匹配過濾
或不匹配過濾時不返回它們。
所以,在過濾數據時,必定要驗證返回數據中確實給出了被
過濾列具備 NULL 的行。

本章介紹瞭如何用 SELECT 語句的 WHERE 子句過濾返回的數據。咱們學 習瞭如何對相等、不相等、大於、小於、值的範圍以及 NULL 值等進行測 試。

相關文章
相關標籤/搜索