MySQL 學習筆記 6 高階資料過濾

2021-10-25 07:45:28 字數 3117 閱讀 1614

過濾資料中介紹的所有 where 子句在過濾資料時使用的都是單一的條件

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

操作符(operator):

用來聯結或者改變where子句中的子句的關鍵字,也稱為邏輯操作符(logical operator)

and 操作符
and

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

vend_id 和 prod_price 兩個限制條件通過 and 聯結

or 操作符

or

指示 dbms 檢索匹配任一條件的行

實際上,與大部分程式語言一樣,許多 dbms 在or where子句的第乙個條件滿足的情況下,就不再計算第二個條件了(在第乙個條件滿足時,不管第二個條件是否滿足,相應的行都會被檢索出來)

求值順序

where子句可以包含任意數目的andor操作符,並允許兩者結合以進行複雜、高階的過濾

在 sql 中,and操作符的處理順序優先於or操作符的處理順序

可以使用圓括號對操作符進行明確分組

圓括號具有比andor操作符更高的優先求值順序

所以,以下兩個**時等價的

select prod_id, prod_price, prod_name 

from products

where vend_id =

'1001'

or vend_id =

'1003'

and prod_price <=

10;

select prod_id, prod_price, prod_name 

from products

where vend_id =

'1001'

or(vend_id =

'1003'

and prod_price <=10)

;

在任何時候使用具有andor操作符的 where 子句,都應該使用圓括號明確地分組

不要過分地依賴預設求值順序;至少圓括號可以有效消除歧義

in

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

in操作符用來指定條件範圍,範圍中的每個條件都可以進行匹配

in取一組由逗號分隔、括在圓括號中的合法值

示例可以參考以下兩個語句的輸出

使用 in 操作符的優點:1、在有很多合法選項時,in操作符更加清楚、直觀

2、在與其他andor操作符組合使用 in 時,求值順序更容易管理

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

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

not

where子句中用來否定其後條件的關鍵字

not從不單獨使用,總是要與其他操作符一起使用

not關鍵字可以用在要過濾的列前,而不僅是在其後

在 mysql 中,可以使用notinbetweenexists子句取反

如下兩個語句,可以看到where子句中含有not(匹配 vend_id 不是 1001 的貨物) 和不包含not(匹配 vend_id 是 1001 的貨物) 時的差別

在這裡,not等價於!=

MySQL高階學習筆記

分組函式 查詢交叉連線 子查詢聯合查詢 插入刪除 檢視變數 儲存過程和函式 流程控制結構 字元函式 length concat upper lower substr substring instr trim lpad rpad replace 數學函式 round ceil floor trunca...

MySQL學習筆記 2 MySQL高階

mysql學習筆記 2 mysql高階 1.mysql資料庫邏輯結構 innodb儲存的邏輯結構包括 表空間 table space 段 segment 區 extent 塊 頁 block page 預設情況下,所有資料都儲存在共享表空間中。如果設定了innodb file per table,每...

MySQL學習筆記 高階聯結(重要)

select p.name as p name,c.name as c name,b.name as b name,price1,model from product as p,product category as c,brand as b where p.categoryid c.id and ...