簡要介紹MySQL操作符
常用:
算術運算符、比較操作符、邏輯操作符、位運算符……
一、算術運算符
+:加 -:減 *:乘 /:除,返回商 %,mod():除,返回余數
mysql> select 3%2,mod(3,2); +------+----------+
| 3%2 | mod(3,2) |
+------+----------+
| 1 | 1 |
+------+----------+
注意:除法運算中,若除數為0(無意義),是非法除數,返回結果為null。
二、比較操作符
---利用比較操作符在DQL語句中實現按條件的檢索

示例用表:球員信息表player、比賽信息表matches

1、獲得聯盟會員號碼為7060的球員信息 mysql> select * from player where leagueno=’7060’; 2、獲得沒有聯盟會員號碼的球員信息 mysql> select * from player where leagueno=null; error……報錯 mysql> select * from player where leagueno <=> null; 或 mysql> select * from player where leagueno is null; “<=>”安全的等於運算符:和“=”類似,在操作數相等時值為 1,不同之處在於即使 操作的值為 NULL 也可以正確比較。 3、找出獲勝局數等於2且輸掉局數等於3的比賽信息 條件中可以進行列值的成對比較 mysql> select * from matches where (won,lost)=(2,3); 注意:條件(2,4)>(1,3)並不等於(2>1) and (4>3),而是等於(2>1) or (2=1 and 4>3)
說明:使用不同運算符的成對比較在轉換為標量表達式比較時,都有各自的轉換規則。 4、between的范圍比較:使用BETWEEN …AND… 操作符可以測試列值是否在一個取值范圍之內 例:找出1962—1964年之間出生的球員的編號、出生日期 mysql> select playerno,birth_date from players where birth_date between '1962-01-01' and '1964-01-01'; 5、in操作符:測試一個列值是否在一個值列表中(值列表中可以是字面量、列或標量子查詢) 例1:得到那些出生在1962、1963或1970的球員的編號、出生年份 mysql> select playerno,year(birth_date) from players where year(birth_date) in (1962,1963,1970); 例2:兩局獲勝或者兩局輸掉的所有比賽 mysql> select * from matches where 2 in (won,lost); 例3:比分為3比1和3比2的所有比賽(in的成對比較) mysql> select * from matches where (won,lost) in ((3,1),(3,2)); 說明:在MySQL內部,in轉換成or操作,not in轉換成and操作 6、 like操作符:實現模式匹配查詢或者模糊查詢 like “匹配模式字符串”測試一個列值是否匹配給出的模式 特殊含義的通配字符: %:表示0個或者任意多個字符 _:只表示一個任意字符 例1:找出名字以大寫字母B開頭的球員 mysql> select * from players where name like ‘B%’; 例2:得到名字以小寫字母r結尾的球員 mysql> select * from players where name like ‘%r’; 例3:得到名字的第二個字母為e的球員的名字和編號 mysql> select name,playerno from players where name like ‘_e%’; 例4:找出名字中包含一個下划線的球員 mysql> select playerno,name from players where name like ‘%/_%’ escape ‘/’; 注意:如果轉義字符指定反斜杠\,必須是escape ‘\\’(反斜杠\在進行模式匹配時,會被剝離一次) 例如:
mysql> select * from table_name where col_name like ‘%\\\%’ escape ‘\\’;
##反斜杠會被語法分析程序剝離一次,在進行模式匹配時,又會被剝離一次,最后會剩下一個反斜杠接受匹配.
7、regexp操作符(regular expression)
--比like功能更加強大---正則

例1:得到名字以ba開頭的球員信息 mysql> select * from players where name regexp '^ba';
例2:得到名字包含了字母a、b或c的球員信息 mysql> select * from players where name regexp '[abc]';
例3:對於名字中有字母m、e、n中的一個,並且連續出現2次的球員信息 mysql> select * from players where name regexp '[men][men]';
三、邏輯操作符
---邏輯運算符又稱為布爾運算符,用來確認表達式的真和假

如果在where中同時用到了and 和or運算符,先算and后算or,因為and優先級高;
可以使用小圓括號來改變運算的順序。
例1: 得到那些住在Stratford或者出生於1963年的球員的編號、姓名、出生日期,但是不包括那些住在Stratford並且出生於1963年的球員 mysql> select playerno,name,birth_date from players where (town='Stratford' or year(birth_date)='1963') and not (town='Stratford' or year(birth_date)='1963'); 例2:得到那些住在Stratford或者出生於1963年的球員的編號、姓名、出生日期,但是不包括那些住在Stratford並且出生於1963年的球員 mysql> select playerno,name,birth_date from players where (town='Stratford') xor (year(birth_date)='1963');
四、位運算符
---位運算是將給定的操作數轉化為二進制后, 對各個操作數每一位都進行指定的邏輯運算,得到的二進制結果轉換為十進制數后就是位運算的結果 
mysql> SELECT 29 & 15; +---------+
| 29 & 15 |
+---------+
| 13 |
+---------+
1 row in set (0.01 sec) mysql> SELECT 1 << 2; +--------+
| 1 << 2 |
+--------+
| 4 |
+--------+
1 row in set (0.00 sec)
位運算符其實也就是位函數,通過mysql> ? Bit Functions了解使用,用得不多,但是要有個印象,要用的時候查看幫助