mysql>SELECT prod_name,prod_price FROM products WHERE vend_id NOTIN(1002,1003)ORDERBY prod_name;+--------------+------------+| prod_name | prod_price |+--------------+------------+|.5 ton anvil |5.99||1 ton anvil |9.99||2 ton anvil |14.99|| JetPack 1000|35.00|| JetPack 2000|55.00|+--------------+------------+5rowsinset(0.01 sec)
此SELECT語句檢索供應商不是1002和1003製造的所有產品;
MySQL中NOT支持NOT對IN,BETWEEN和EXISTS子句取反。
運算符優先級
優 先 級 由 低 到 高 排 列
運 算 符
1
=(賦值運算)、:=
2
II、OR
3
XOR
–
–
5
NOT
6
BETWEEN、CASE、WHEN、THEN、ELSE
7
=(比較運算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN
8
|
9
&
10
<<、>>
11
-(減號)、+
12
*、/、%
13
^
14
-(負號)、〜(位反轉)
15
!
LIKE操作符
百分號(%)通配符
mysql>SELECT prod_id,prod_name FROM products WHERE prod_name LIKE'jet%';+---------+--------------+| prod_id | prod_name |+---------+--------------+| JP1000 | JetPack 1000|| JP2000 | JetPack 2000|+---------+--------------+2rowsinset(0.00 sec)
將檢索任意以jet起頭的詞,%告訴MySQL接受jet之後的任意字符。
下劃線(—)通配符
mysql>SELECT prod_id,prod_name FROM products WHERE prod_name LIKE'_ ton anvil';+---------+-------------+| prod_id | prod_name |+---------+-------------+| ANV02 |1 ton anvil || ANV03 |2 ton anvil |+---------+-------------+2rowsinset(0.00 sec)
下劃線(—)總是匹配一個字符。
正則表達式
基礎字符匹配
mysql>SELECT prod_name FROM products WHERE prod_name REGEXP'1000'ORDERBY prod_name;+--------------+| prod_name |+--------------+| JetPack 1000|+--------------+1rowinset(0.04 sec)
mysql>SELECT prod_name FROM products WHERE prod_name REGEXP'.000'ORDERBY prod_name;+--------------+| prod_name |+--------------+| JetPack 1000|| JetPack 2000|+--------------+2rowsinset(0.00 sec)
REGEXP後所跟的東西作爲正則表達式(與文字正文1000匹配的一個正則表達式)處理;
.它表示匹配任意一個字符。
進行OR匹配
mysql>SELECT prod_name FROM products WHERE prod_name REGEXP'1000|2000'ORDERBY prod_name;+--------------+| prod_name |+--------------+| JetPack 1000|| JetPack 2000|+--------------+2rowsinset(0.00 sec)
匹配幾個字符之一
mysql>SELECT prod_name FROM products WHERE prod_name REGEXP'[123] Ton'ORDERBY prod_name;+-------------+| prod_name |+-------------+|1 ton anvil ||2 ton anvil |+-------------+2rowsinset(0.00 sec)
[123]定義一組字符,它的意思是匹配1或2或3。
匹配範圍
mysql>SELECT prod_name FROM products WHERE prod_name REGEXP'[1-5] Ton'ORDERBY prod_name;+--------------+| prod_name |+--------------+|.5 ton anvil ||1 ton anvil ||2 ton anvil |+--------------+3rowsinset(0.00 sec)
[1-5]定義了一個範圍,這個表達式意思是匹配1到5。
匹配特殊字符
mysql>SELECT prod_name FROM products WHERE prod_name REGEXP'\\.'ORDERBY prod_name;+--------------+| prod_name |+--------------+|.5 ton anvil |+--------------+1rowinset(0.00 sec)
mysql>SELECT prod_name FROM products WHERE prod_name REGEXP'^[0-9\\.]';+--------------+| prod_name |+--------------+|.5 ton anvil ||1 ton anvil ||2 ton anvil |+--------------+3rowsinset(0.00 sec)