SQL必知必會 高階資料過濾

2022-08-12 14:24:18 字數 2160 閱讀 8280

1、組合where子句

為了進行更強的過濾控制,sql允許給出多個where子句,這些子句有兩種使用方式,即以and子句或or子句的方式使用。

注意:1、操作符:用來聯結或改變where子句中的子句的關鍵字,也稱為邏輯操作符

1.1、and操作符

#檢索由**商dll01製造且**小於等於4美元的所有產品的名稱和**;

select prod_id , prod_price , prod_name

from products

where vend_id = 'dll01' and prod_price <= 4 ;12

341.2 、or操作符

#檢索由**商dll01或者brs01製造的所有產品的產品名和**;

select prod_name ,prod_price

from products

where vend_id = 'dll01' or vend_id = 'brs01' ;12

341.3、求值順序

列出**為10美元及以上,且有dll01或bsr01製造的產品。

輸入:select prod_name,prod_price

from products

where vend_id = 'dll01' or vend_id = 'brs01'

and prod_price >= 10;

#錯誤123

45輸出:分析:

返回的行中由四行**小於10美元,顯然返回的行未按預期的進行過濾。原因就是and操作符的優先順序比or操作符的優先順序高,所有這裡理解為:由**商brs01製造的**為10美元以上的所有產品,以及由**商製造的所有產品而且不管其**如何。

輸入:select prod_name,prod_price

from products

where (vend_id = 'dll01' or vend_id = 'brs01')

and prod_price >= 10;

#正確#正確的語句和前一條的唯一差別就是,將前兩個條件用圓括號括了起來12

3456

輸出:注意:

1、任何時候使用具有and和or操作符的whereziju,都應該使用圓括號明確的分組操作符。不要過分依賴預設求值順序,即使他確實如你希望的那樣。使用圓括號沒有什麼壞處,他能消除歧義。

2、in操作符

in:where子句中用來指定要匹配值的清單的關鍵字,功能與or相當。

select prod_name,prod_price

from products

where vend_id in ('dll01','brs01')

order by prod_name ;12

34select prod_name,prod_price

from products

where vend_id = 』dll01『 or vend_id = 'brs01'

order by prod_name ;12

34為什麼要使用in操作符

1、再由很多合法選項時,in操作符的語法更清楚,更直觀。

2、在與其他and和or操作符組合使用in時,求職順序更容易管理。

3、in操作符一般比一組or操作符執行的更快。

4、in的最大優點是可以包含其他select語句,能夠更動態的建立where子句。

3、not操作符

where子句中的not操作符由且只有乙個功能,那就是否定其後所更的任何條件。

select prod_name

from produtcts

where not vend_id = 'dll01'

order by prod_name ;12

34分析:這裡的not否定跟在其後的條件,因此,dbms不是匹配vend_id為dll01,而是匹配非dll01之外的所有東西。

#以上的例子也可以使用<>操作符來完成

select prod_name

from products

where vend_id <> 'dll01'

order by prod_name ;12

345分析:

為什麼使用not?對於這裡的這種簡單的where子句,使用not確實沒有什麼優勢。但在更複雜的子句中,not是非常有用的。

---------------------

SQL必知必會 5 高階資料過濾

為了進行更強的過濾控制,sql允許給出多個where子句,這些子句有兩種使用方式,即以and子句或or子句的方式使用。注意 1 操作符 用來聯結或改變where子句中的子句的關鍵字,也稱為邏輯操作符。檢索由 商dll01製造且 小於等於4美元的所有產品的名稱和 select prod id prod...

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...