SQL WHERE過濾數據

1.過濾數據
講授SELECT語句的WHERE子句指定搜索條件
使用WHERE子句

數據庫表包含大量的數據,很少需要檢索表中的所有行.通常只會根據特定操作或報告的需要提取表數據的子集.只檢索所需數據需要指定搜索條件,搜索條件也稱爲過濾條件.

在SELECT語句中,數據根據WHERE子句中指定的搜索條件進行過濾,WHERE子句在表名(FROM子句)之後給出,如下所示:

從prodcuts表中檢索三個列,但不返回所有行,只返回UnitPrice值小於6的行.
在這裏插入圖片描述
數據也可以在應用層過濾,爲此,SQL的SELECT語句爲客戶端應用檢索出超出實際所需的數據,然後客戶端對返回數據進行循環,提出需要的行.
但是這是不妥的,優化數據庫可更快對數據進行過濾,而客戶端應用(開發語言)處理數據庫的工作會影響應用性能.服務器不得不通過網絡發送多餘的數據,將造成網絡帶寬的浪費.

在同時使用ORDER BY和WHERE子句時,應該讓ORDER BY位於WHERE之後,否則將產生錯誤

2.WHERE自己操作符
某些操作符是沉餘的(如<>與!=相同,!<相當於>=).並非所有的DBMS都支持這些操作符.
在這裏插入圖片描述

這個例子列出所有不是Chai名的產品
何時時使用引號?
如果仔細觀察WHERE子句中的條件,會看到有的值括在單引號內,而有的值未括起來,單引號用來限定字符串,如果將值與字符串類型的列進行比較,就需要引用限定引號.用來與數值列進行比較的值不用引號.

!=和<>通常是可以互換的.但有些DBMS不支持的.
在這裏插入圖片描述

範圍值檢查
要檢查某個範圍的值,可以使用BETWEEN操作符,其語法與其他WHERE子句操作符稍有不同,因爲它需要兩個值,即範圍的開始值和結束值,例如,BETWEEN操作符可以來檢索價格在所需要錢之間,或者在指定的開始日期和結束日期之間的所有日期.

下面例子說明如何使用BETWEEN操作符,它檢索價格2-6之間(包括開始值和結束值),必須用AND關鍵字分隔.必須指定兩個值–所需範圍最低值和最高值,
在這裏插入圖片描述
空值檢查
創建表時,表設計人員可以知道其中的列能否不包含值時,稱其包含空值NULL.

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

確定是否爲NULL,不能簡單的檢查是否=NUll,SELECT語句有一個特殊的WHERE子句,可用來檢查具有NULL值的列,這個WHERE子句就可以是 IS NULL子句,其語法如下:
由於語句返回沒有價格的產品(空的字段,不是價格爲0)的,由於表中沒有這樣的行,所以沒有返回數據,但是employees表確實包含NULL值,如下.
在這裏插入圖片描述
在這裏插入圖片描述
過濾數據時,一定要驗證列中含NULL的行確實出現在返回數據中.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章