說明:組合WHERE子句
第6章中介紹的所有WHERE子句在過濾數(shù)據(jù)時(shí)使用的都是單一的條件。為了進(jìn)行更強(qiáng)的過濾控制,MySQL允許給出多個(gè)WHERE子句。
這些子句可以兩種方式使用:以AND子句的方式或OR子句的方式使用。
概念:操作符(operator)用來聯(lián)結(jié)或改變WHERE子句中的子句的關(guān)鍵字。也稱為邏輯操作符(logical operator)。
1、AND操作符
eg:select name,price from product where price = 2 and name = red
上述例子中使用了只包含一個(gè)關(guān)鍵字AND的語句,把兩個(gè)過濾條件組合在一起。還可以添加多個(gè)過濾條件,每添加一條就要使用一個(gè)AND。
2、OR操作符
OR操作符與AND操作符不同,它指示MySQL檢索匹配任一條件的行。
eg:select name,price from product where price = 2 or name = red
注意:SQL(像多數(shù)語言一樣)在處理OR操作符前,優(yōu)先處理AND操作作符。
此問題的解決方法是使用圓括號明確地分組相應(yīng)的操作符。
在WHERE子句中使用圓括號任何時(shí)候使用具有AND和OR操作符的WHERE子句,都應(yīng)該使用圓括號明確地分組操作符。不要過分依賴默認(rèn)計(jì)算次序,即使它確實(shí)是你想要的東西也是如此。使用圓括號沒有什么壞處,它能消除歧義。
3、IN操作符
圓括號在WHERE子句中還有另外一種用法。IN操作符用來指定條件范
圍,范圍中的每個(gè)條件都可以進(jìn)行匹配。IN取合法值的由逗號分隔的清
單,全都括在圓括號中。
eg:select name,price from product where price in (2,3,4)
注意:IN操作符和OR在功能上是一樣的。
為什么要使用IN操作符?其優(yōu)點(diǎn)具體如下。
?在使用長的合法選項(xiàng)清單時(shí),IN操作符的語法更清楚且更直觀。
?在使用IN時(shí),計(jì)算的次序更容易管理(因?yàn)槭褂玫牟僮鞣伲?/p>
?IN操作符一般比OR操作符清單執(zhí)行更快。
?IN的最大優(yōu)點(diǎn)是可以包含其他SELECT語句,使得能夠更動態(tài)地建立WHERE子句。第14章將對此進(jìn)行詳細(xì)介紹。
4、NOT操作符
WHERE子句中的NOT操作符有且只有一個(gè)功能,那就是否定它之后所跟的任何條件。
eg:select name,price from product where price not in (2,3,4)
注意:MySQL支持使用NOT對IN、BETWEEN和EXISTS子句取反,這與多數(shù)其他DBMS允許使用NOT對各種條件取反有很大的差別。