過濾資料中介紹的所有 where 子句在過濾資料時使用的都是單一的條件
為了更強的過濾控制,sql 允許給出多個where
子句;這些子句有兩種使用方式,以 and
子句或or
子句
操作符(operator):and 操作符用來聯結或者改變
where
子句中的子句的關鍵字,也稱為邏輯操作符(logical operator)
vend_id 和 prod_price 兩個限制條件通過 and 聯結and
:用在
where
子句中的關鍵字,用來指示檢索滿足所有給定條件的行
or 操作符
實際上,與大部分程式語言一樣,許多 dbms 在or
:指示 dbms 檢索匹配任一條件的行
or where
子句的第乙個條件滿足的情況下,就不再計算第二個條件了(在第乙個條件滿足時,不管第二個條件是否滿足,相應的行都會被檢索出來)
求值順序
where
子句可以包含任意數目的and
和or
操作符,並允許兩者結合以進行複雜、高階的過濾
在 sql 中,and
操作符的處理順序優先於or
操作符的處理順序
可以使用圓括號對操作符進行明確分組
圓括號具有比所以,以下兩個**時等價的and
或or
操作符更高的優先求值順序
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)
;
在任何時候使用具有and
和or
操作符的 where 子句,都應該使用圓括號明確地分組
不要過分地依賴預設求值順序;至少圓括號可以有效消除歧義
示例可以參考以下兩個語句的輸出in
:
where
子句中用來指定要匹配值地清單的關鍵字,功能與or
相當
in
操作符用來指定條件範圍,範圍中的每個條件都可以進行匹配
in
取一組由逗號分隔、括在圓括號中的合法值
使用 in 操作符的優點:1、在有很多合法選項時,in
操作符更加清楚、直觀
2、在與其他and
和or
操作符組合使用 in 時,求值順序更容易管理
3、in
操作符一般比一組or
操作符執行更快
4、in
最大的優點是可以包含其他select
語句,能夠更動態地建立where
子句
not
:在
where
子句中用來否定其後條件的關鍵字
not
從不單獨使用,總是要與其他操作符一起使用
not
關鍵字可以用在要過濾的列前,而不僅是在其後
在 mysql 中,可以使用如下兩個語句,可以看到not
對in
、between
、exists
子句取反
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 ...