為了進行更強的過濾控制,sql允許給出多個where子句,這些子句有兩種使用方式,即以and子句或or子句的方式使用。
注意:
1、操作符:用來聯結或改變where子句中的子句的關鍵字,也稱為邏輯操作符。
#檢索由**商dll01製造且**小於等於4美元的所有產品的名稱和**;
select prod_id , prod_price , prod_name
from products
where vend_id = 'dll01' and prod_price <= 4 ;
#檢索由**商dll01或者brs01製造的所有產品的產品名和**;
select prod_name ,prod_price
from products
where vend_id = 'dll01' or vend_id = 'brs01' ;
列出**為10美元及以上,且有dll01或bsr01製造的產品。
輸入:
select prod_name,prod_price
from products
where vend_id = 'dll01' or vend_id = 'brs01'
and prod_price >= 10;
#錯誤
輸出:
分析:
返回的行中由四行**小於10美元,顯然返回的行未按預期的進行過濾。原因就是and操作符的優先順序比or操作符的優先順序高,所有這裡理解為:由**商brs01製造的**為10美元以上的所有產品,以及由**商製造的所有產品而且不管其**如何。
輸入:
select prod_name,prod_price
from products
where (vend_id = 'dll01' or vend_id = 'brs01')
and prod_price >= 10;
#正確#正確的語句和前一條的唯一差別就是,將前兩個條件用圓括號括了起來
輸出:注意:1、任何時候使用具有and和or操作符的whereziju,都應該使用圓括號明確的分組操作符。不要過分依賴預設求值順序,即使他確實如你希望的那樣。使用圓括號沒有什麼壞處,他能消除歧義。
in:
where子句中用來指定要匹配值的清單的關鍵字,功能與or相當。
select prod_name,prod_price
from products
where vend_id in ('dll01','brs01')
order by prod_name ;
select prod_name,prod_price
from products
where vend_id = 』dll01『 or vend_id = 'brs01'
order by prod_name ;
為什麼要使用in操作符?
1、再由很多合法選項時,in操作符的語法更清楚,更直觀。
2、在與其他and和or操作符組合使用in時,求值順序更容易管理。
3、in操作符一般比一組or操作符執行的更快。
4、in的最大優點是可以包含其他select語句,能夠更動態的建立where子句。
where子句中的not操作符由且只有乙個功能,那就是否定其後所跟的任何條件。
select prod_name
from produtcts
where not vend_id = 'dll01'
order by prod_name ;
分析:這裡的not否定跟在其後的條件,因此,dbms不是匹配vend_id為dll01,而是匹配非dll01之外的所有東西。
#以上的例子也可以使用<>操作符來完成
select prod_name
from products
where vend_id <> 'dll01'
order by prod_name ;
分析:為什麼使用not?對於這裡的這種簡單的where子句,使用not確實沒有什麼優勢。但在更複雜的子句中,not是非常有用的。 SQL必知必會 高階資料過濾
1 組合where子句 為了進行更強的過濾控制,sql允許給出多個where子句,這些子句有兩種使用方式,即以and子句或or子句的方式使用。注意 1 操作符 用來聯結或改變where子句中的子句的關鍵字,也稱為邏輯操作符 1.1 and操作符 檢索由 商dll01製造且 小於等於4美元的所有產品的...
SQL必知必會 過濾資料
where子句 select vend name vend address from test dbo vendors where vend name hanma 注 當有order by 和 where 時,where 在order by 前面 where子句操作符 單個值檢查 select ve...
SQL 必知必會 筆記 3 過濾資料
在同時使用order by和where子句時,應該讓order by位於 where 之後,否則將會產生錯誤 where子句操作符 範圍值檢查 使用between操作符,示例 select prod name,prod price from products where prod price bet...