MySQL必知必會 —— 過濾數據

第六章 過濾數據

1.使用 where語句

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

select 列名 from 表名 
where 查詢條件;

SQL過濾與應用過濾 數據也可以在應用層過濾。爲此目的,SQL的SELECT語句爲客戶機應用檢索出超過實際所需的數據,然後客戶機代碼對返回數據進行循環,以提取出需要的行。通常,這種實現並不令人滿意。因此,對數據庫進行了優化,以便快速有效地對數據進行過濾。讓客戶機應用(或開發語言)處理數據庫的工作將會極大地影響應用的性能,並且使所創建的應用完全不具備可伸縮性。此外,如果在客戶機上過濾數據,服務器不得不通過網絡發送多餘的數據,這將導致網絡帶寬的浪費。

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

2.where子句操作符

在這裏插入圖片描述

2.1 檢查單個值

select 列名1,列名2 from 表名
where 列名1滿足的查詢條件;

MySQL在執行匹配時默認不區分大小寫,所以fuses與Fuses匹配。

2.2 不匹配檢查

select 列名1,列名2 from 表名
where 列名1不滿足的查詢條件;

何時使用引號 引號用來限定字符串。如果將值與串類型的列進行比較,則需要限定引號。用來與數值列進行比較的值不用引號。

2.3 範圍值查詢

select 列名1,列名2 from 表名
where 列名1 between min and max;

***使用BETWEEN時,必須指定兩個值——所需範圍的低端值和高端值。***這兩個值必須用AND關鍵字分隔。BETWEEN匹配範圍中所有的值,包括指定的開始值和結束值

2.4空值查詢

查詢列名1是NULL的數據

select 列名1,列名2 from 表名
where 列名1 is NULL;

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

第七章 數據過濾

1. 組合where子句

操作符(operator) 用來聯結或改變WHERE子句中的子句的關鍵字。也稱爲邏輯操作符(logical operator)。

1.1 and 操作符

AND 用在WHERE子句中的關鍵字,用來指示檢索滿足所有給定條件的行

select 列名1,列名2 from 表名
where 查詢條件1 and 查詢條件2

1.2 or操作符

OR WHERE子句中使用的關鍵字,用來表示檢索匹配任一給定條件的行。

select 列名1,列名2 from 表名
where 查詢條件1 or 查詢條件2

1.3 計算次序

select 列名1,列名2 from 表名
where 查詢條件1 or 查詢條件2 and 查詢條件3
select 列名1,列名2 from 表名
where (查詢條件1 or 查詢條件2and 查詢條件3

上述兩個SQL語句的查詢次序是不同的
SQL(像多數語言一樣)在處理OR操作符前,優先處理AND操作符。

在WHERE子句中使用圓括號 任何時候使用具有AND和OR操作符的WHERE子句,都應該使用圓括號明確地分組操作符。不要過分依賴默認計算次序,即使它確實是你想要的東西也是如此。使用圓括號沒有什麼壞處,它能消除歧義。

2. in操作符

IN WHERE子句中用來指定要匹配值的清單的關鍵字,功能與OR相當。

select 列名1,列名2 from 表名
where 列名1 in (min,max);

爲什麼要使用IN操作符?
❑ 在使用長的合法選項清單時,IN操作符的語法更清楚且更直觀。
❑ 在使用IN時,計算的次序更容易管理(因爲使用的操作符更少)。
❑ IN操作符一般比OR操作符清單執行更快。
❑ IN的最大優點是可以包含其他SELECT語句,使得能夠更動態地建立WHERE子句。第14章將對此進行詳細介紹。

3. not操作符

NOT WHERE子句中用來否定後跟條件的關鍵字。

select 列名1,列名2 from 表名
where 列名1 not in (min,max);

MySQL中的NOT MySQL支持使用NOT對IN、BETWEEN和EXISTS子句取反,這與多數其他DBMS允許使用NOT對各種條件取反有很大的差別。

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