1. 算術運算符 算術運算符在兩個表達式上執行數學運算,這兩個表達式可以是任何數字數據類型。算術運算符有:+(加)、-(減)、*(乘)、/(除)和%(求模)5種運算。 (1)“+”運算符 www.2cto.com “+”運算符用於獲得一個或多個值的和: SELECT 1.2+3.09345, 0.00000000001+0.00000000001; (2)“–”運算符 “–”運算符用於從一個值中減去另一個值,並可以更改參數符號: SELECT 200-201, 0.14-0.1, -2(更改參數符號); 注意:若該操作符與BIGINT同時使用,則返回值也是一個BIGINT。這意味著在可能產生–263的整數運算中應當避免使用減號“–”,否則會出現錯誤。其中,+(加)和–(減)運算符還可用於對日期時間值(如DATETIME)進行算術運算。 例如: SELECT '2008-01-20'+ interval 22 DAY; 說明:INTERVAL關鍵字後面跟一個時間間隔,22 DAY表示在當前的日期基礎上加上22天。當前日期為2008-01-20,加上22天後為2008-02-11。 (3)“*”運算符 “*”運算符用來獲得兩個或多個值的乘積: SELECT 5*12,5*0, -19530415* -19540319(算負數乘積時不加括號); (4)“/”運算符 與乘法用法一樣,只是除以零的除法是不允許的,如果這樣做,MySQL會返回NULL: (5)“%”運算符 www.2cto.com “%”運算符用來獲得一個或多個除法運算的余數: SELECT 12%5, -32%7,3%0; 2.比較運算符 比較運算符(又稱關系運算符),用於比較兩個表達式的值,其運算結果為邏輯值,可以為三種之一:1(真)、0(假)及 NULL(不能確定)。下表列出了在MySQL中可以使用的各種比較運算符。 運 算 符 含 義 運 算 符 含 義 = 等於 <= 小於等於 > 大於 <>、!= 不等於 < 小於 <=> 相等或都等於空 >= www.2cto.com 大於等於 比較運算符可以用於比較數字和字符串。數字作為浮點值比較,而字符串以不區分大小寫的方式進行比較(除非使用特殊的BINARY關鍵字)。前面已經介紹了在運算過程中MySQL能夠自動地把數字轉換為字符串,而在比較運算過程中,MySQL能夠自動地把字符串轉換為數字。 下面這個例子說明了在不同的情況下MySQL以不同的方式處理數字和字符串。 例: 執行下列語句: SELECT 5 = '5ab','5'='5ab'; 結果為:1,0;分析:第一個中,字母a、b自動轉換為數字,因為沒對應數字,固轉換為0,所以與左邊相等;第二個中都可能向著對方的類型轉換,沒准了就。 (1)“=”運算符 “=”運算符用於比較表達式的兩邊是否相等,也可以對字符串進行比較,示例如下: SELECT 3.14=3.142,'a'='A','A'='B','apple'='banana'; 注意:因為在默認情況下MySQL以不區分大小寫的方式比較字符串,所以表達式'a'='A'的結果為真。如果想執行區分大小寫的比較,可以添加BINARY關鍵字,這意味著對字符串以二進制方式處理。當在字符串上執行比較運算時,MySQL將區分字符串的大小寫。 如下: SELECT'Apple'='apple' , BINARY 'Apple'='apple'; 結果為:1,0; (2)“<>”運算符 與“=”運算符相對立的是“<>”運算符,它用來檢測表達式的兩邊是否不相等,如果不相等則返回真值,相等則返回假值。 示例如下: SELECT 5<>5 ,5<>6,’a’<>’a’,’5a’<>’5b’; 結果為:0,1,0,1 SELECTNULL<>NULL, 0<>NULL, 0<>0; 結果為:null,null,0 3.邏輯運算符 邏輯運算符用於對某個條件進行測試,運算結果為TRUE(1)或FALSE(0)。MySQL提供的邏輯運算符如下表所示。 www.2cto.com 運 算 符 運 算 規 則 運 算 符 運 算 規 則 NOT或! 邏輯非 OR或|| 邏輯或 AND或&& 邏輯與 XOR 邏輯異或 (1)AND運算符 AND運算符用於測試兩個或更多的值(或表達式求值)的有效性,如果它的所有成分為真,並且不是NULL,它返回真值,否則返回假值。例如: SELECT (1=1) AND(9>10),('a'='a') AND ('c'<'d');(按ASCLL碼比較)結果為0,1; (2)XOR運算符 如果包含的值或表達式一個為真而另一個為假並且不是NULL,那麼它返回真值,否則返回假值。(兩者一樣返回假,不一樣返回真) 例如: SELECT (1=1) XOR (2=3), (1<2) XOR (9<10); 4. 位運算符 位運算符在兩個表達式之間執行二進制位操作,這兩個表達式的類型可為整型或與整型兼容的數據類型(如字符型,但不能為image類型),位運算符如下表所示。 運 算 符 運 算 規 則 運 算 符 www.2cto.com 運 算 規 則 & 位AND ~ 位取反 | 位OR >> 位右移 ^ 位XOR << 位左移 5.除了以上的運算符,MySQL還提供了其他一些常用的運算符,如BETWEEN運算符、IN運算符、IS NULL 和ISNOT NULL運算符、LIKE運算符、REGEXP運算符等,這些在SELECT語句中的WHERE子句中已經有過介紹。 當一個復雜的表達式有多個運算符時,運算符優先級決定執行運算的先後次序。執行的順序會影響所得到的運算結果。運算符優先級如下表所示。在一個表達式中按先高(優先級數字小)後低(優先級數字大)的順序進行運算。 運 算 符 優先級 運 算 符 優先級 +(正)、–(負)、~(按位NOT) 1 NOT 6 *(乘)、/(除)、%(模) www.2cto.com 2 AND 7 +(加)、–(減) 3 ALL、ANY、BETWEEN、IN、LIKE、OR、SOME 8 =,>,<,>=,<=,<>,!= ,!> ,!<比較運算符 4 =(賦值) 9 ^(位異或)、&(位與)、|(位或) 5 6. 表達式 表達式就是常量、變量、列名、復雜計算、運算符和函數的組合。一個表達式通常可以得到一個值。與常量和變量一樣,表達式的值也具有某種數據類型,可能的數據類型有字符類型、數值類型、日期時間類型。這樣,根據表達式的值的類型,表達式可分為字符型表達式、數值型表達式和日期型表達式。 表達式還可以根據值的復雜性來分類: 當表達式的結果只是一個值,如一個數值、一個單詞或一個日期,這種表達式叫做標量表達式。例如:1+2,'a'>'b'。 www.2cto.com 當表達式的結果是由不同類型數據組成的一行值,這種表達式叫做行表達式。例如,('081101','王林','計算機',500)。 當表達式的結果為0個、1個或多個行表達式的集合,那麼這個表達式就叫做表表達式。 表達式按照形式還可分為單一表達式和復合表達式。單一表達式就是一個單一的值,如一個常量或列名。復合表達式是由運算符將多個單一表達式連接而成的表達式,例如:1+2+3,a=b+3,'2008-01-20'+INTERVAL 2 MONTH。 表達式一般用在SELECT及SELECT語句的WHERE子句中。 作者 tianyazaiheruan