MySQL(六)之MySQL常用操作符


前言

在前面的MySQL學習中,我們學習了MySQL的安裝,管理以及配置,還有是它的DDL。今天給大家分享一下,MySQL的操作符。

千里之行始於足下,做什么事情都要腳踏實地的去做才能做好它。fighting!

一、MySQL操作符

  運算符連接表達式中各個操作數,其作用是用來指明對操作數所進行的運算。常見的運算有數學計算、比較運算、位運算以及邏輯運算。

  運用運算符可以更加靈活地使用表中的數據,常見的運算符類型有:算術運算符,比較運算符,邏輯運算符,位運算符等。

二、算術運算符

    用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求於(或稱模運算,%)

    

三、比較運算符

3.1、概述

    用於比較運算。包括大於(>)、小於(<)、等於(=)、大於等於(>=)、小於等於(<=)、不等於(!=)、以及IN、BETWEEN AND、IS NULL、GREATEST、LEAST、LIKE、REGEXP

    一個比較運算符的結果總是1、0或者是NULL,比較運算符經常在SELECT的查詢條件字句中使用,用來查詢滿足指定條件的記錄。

    

3.2、實例

    1)等號”=”用來判斷數字、字符串和表達式是否相等。如果相等,返回值為1,否則返回值為0。

      select 1=0,'2'=2,2=2,NULL=NULL;  返回值=0,1,1,null

    2)安全等於號。這個操作符合=操作符執行相同的比較操作,不過<=>可以用來判斷NULL值,在兩個操作數均為NULL時,其返回值為1而不為NULL,而當一個操作數為NULL時,其返回值為0而不為NULL。

      select 1<=>0,'2'<=>2,NULL<=>NULL;   返回值=0,1,1

    3)‘<>’或者’!=’用於判斷數字、字符串、表達式不相等的判斷。如果不相等,返回值為1;否則返回值為0。這兩個運算符不能用於判斷空值NULL。

      select 'good'<>'good',1<>2,4!=5,5.5!=5,(1+3)!=(2+1),NULL<>NULL;  返回值=0,1,1,1,0,null

    4)IS NULL和ISNULL檢驗一個值是否為NULL,如果為NULL,返回值為1。否則返回值為0;IS NOT NULL檢驗一個值是否為非NULL,如果非NULL,返回值為1;否則返回值為0。

       select NULL IS NULL,ISNULL(NULL),ISNULL(10),10 IS NOT NULL;  返回值=1,1,0,1

    5)BETWEEN AND運算符。語法格式為:expr BETWEEN min AND max。假如expr大於或等於min且小於或等於max,則BETWEEN的返回值為1,否則返回值為0。

      select 4 BETWEEN 4 AND 6,12 BETWEEN 9 AND 10;   返回值=1,0

    6)LEAST運算符。語法格式為:LEAST(值1,值2,…值n),其中值n表示參數列表中有n個值。在有兩個或多個參數的情況下,返回最小值。假如任意一個自變量為NULL,則LEAST()的返回值為NULL。

      select least(2,0),least(20.0,3.0,100.5),least(10,NULL);  返回值=0,3.0,null

    7)GREATEST(value1,value2,…)。語法格式為:GREATEST(值1,值2,…值n),其中n表示參數列表中有n個值。當有2個或多個參數時,返回值為最大值,假如任意一個自然變量為NULL,則GREATEST()的返回值為NULL。

      select greatest(2,0),greatest(20.0,3.0,100.5),greatest(10,NULL); 返回值=2,100.5,null

    8)IN、NOT IN運算符。IN運算符用來判斷操作數是否為IN列表中的其中一個值,如果是,返回值為1;否則返回值為0。

      select 2 IN(1,3,5,'thks'),'thks' IN(1,3,5,'thks');  返回值=0,1

    9)LIKE運算符用來匹配字符串,語法格式為:expr LIKE 匹配條件,如果expr滿足匹配條件,則返回值為1(TRUE);如果不匹配,則返回值為0(FALSE)。若expr或匹配條件中任何一個為NULL,則結果為NULL。
      LIKE運算符在進行匹配時,可以使用下面兩種通配符:
      9.1) ‘%’,匹配任何數目的字符,甚至包括0字符。
      9.2.)‘_’,只能匹配一個字符。

       select 'stud' LIKE 'stud','stud' LIKE 'stu_','stud' LIKE '%d','stud' LIKE 't___','s' LIKE NULL;  返回值=1,1,1,1,0

    10)REGEXP運算符用來匹配字符串,語法格式為:expr REGEXP 匹配條件,如果expr滿足匹配條件,返回1;如果不滿足,則返回0;若expr或匹配條件任意一個為NULL,則結果為NULL。
      REGEXP運算符在進行匹配時,常用的有下面幾種通配符:
      (1) ‘^’匹配以該字符后面的字符開頭的字符串。
      (2) ‘$’匹配以該字符后面的字符結尾的字符串。
      (3) ‘.’匹配任何一個單字符。
      (4) ‘[…]’匹配在方括號內的任何字符。例如,”[abc]”匹配”a”、”b”或”c”。為了命名字符串的范圍,使用一個’-‘。”[a-z]”匹配任何字母,而”[0-9]”匹配任何數字。
      (5) ‘*’匹配0個或多個在它前面的字符。  

        select 'ssky' REGEXP '^s','ssky' REGEXP 'y$','ssky' REGEXP '.sky','ssky' REGEXP '[ab]';

三、邏輯運算符

  3.1、概述

    在SQL中,所有邏輯運算符的求值所得結果均為TRUE、FALSE或NULL。在MySQL中,它們體現為1(TRUE)、0(FALSE)和NULL。

    

  3.2、實例

    1)NOT或!

      邏輯非運算符NOT或者!表示當操作數為0時,所得值為1;當操作數為非零值時,所得值為0,當操作數為NULL時,所得的返回值為NULL。

      select NOT 10,NOT(1-1),NOT -5,NOT NULL,NOT 1+1; 返回值= 0,1,0,0

    2)AND或&&

      邏輯與運算符AND或者&&表示當所有操作數均為非零值、並且不為NULL時,計算所得結果為1;當一個或多個操作數為0時,所得結果為0,其余情況返回值為NULL

      select 1 AND -1,1 AND 0,1 AND NULL,0 AND NULL;

    3)OR或||

      邏輯與運算符OR或者||表示當兩個操作數均為非NULL值,且任意一個操作數為非零值時,結果為1,否則結果為0

      當有一個操作數為NULL,且另一個操作數為非零值時,則結果為1,否則結果為NULL;當兩個操作數均為NULL時,則所得結果為NULL。    

      select 1 OR-1,1 OR 0,1 OR NULL,0 OR NULL;      

    4)XOR

      邏輯異或運算符XOR。當任意一個操作數為NULL時,返回值為NULL;對於非NULL的操作數,如果兩個操作數都是非0值或者都是0值,則返回結果為0;如果一個為0值,另一個為非0值,返回結果為1

        select 1 XOR 1,0 XOR 0,1 XOR 0,0 XOR 0,1 XOR NULL,1 XOR 1;

四、位運算符

  4.1、概述

  位運算符是用來對二進制字節中的位進行測試、位移或者測試處理,MySQL中提供的位運算符有按位或(|)、按位與(&)、按位異或(^)、按位左移(<<)、按位右移(>>)、按位取反(~)

  

  4.2、實例

    1)位或運算符 |

      位或運算的實質是將參與運算的兩個數據,按對應的二進制數逐位進行邏輯或運算。對應的二進制有一個或兩個為1則該位的運算結果為1,否則為0

      select 10|15,9|4|2;     返回值=15,15

      分析:10的二進制數值為1010,15的二進制數值為1111,按位或運算之后,結果為1111,即整數15;9的二進制位1001,4的二進制為0010,按位或運算之后,結果為1111,即整數15。其結果為一個64位無符號整數

    2)位與運算符 &

      位與運算的實質是將參與運算的兩個操作數,按對應的二進制數逐位進行邏輯與運算。對應的二進制都為1,則該位的運算結果為1,否則為0。

      select 10&15,9&4&2;  返回值=10,9

      分析:10的二進制位1010,15的二進制位1111,按位與運算結果為1010,即整數10;9的二進制為1001,4的二進制位0100,2的二進制為0010,按位與運算之后,結果為0000,即整數0,。其結果為一個64位無符號整數。

    3)位異或運算 ^

      位異或運算的實質是將參與運算的兩個數據,按對應的二進制數逐位進行邏輯異或運算。對應的二進制數不同時,對應的結果才為1。如果兩個對應位數都為0或者都為1,則對應位的結果為0

      select 10^15,1^0,1^1;  返回值=5,1,0

    4)位左移運算符 <<

      位左移運算符<<使指定的二進制值的所有位都左移指定的位數。左移指定位數之后,左邊高位的數值被移出並丟棄,右邊低位空出的位置用0補齊。語法格式為:expr<

      select 1<<2,4<<2;  返回值=4,16

      分析:1的二進制位0000 0001,左移兩位之后0000 0100,即十進制整數4;十進制4左移兩位之后變成0001 0000,即變成十進制的16。

    5)位右移運算符 >>

      位右移運算符>>使指定的二進制的所有位都右移指定的位數。右移指定位數之后,右邊低位的數值將被丟棄移除,左邊高位空出的位置用0補齊。語法格式為:expr>>n。這里n指定值expr要移除的位數。

      select 1>>1,16>>2;  返回值=0,16

      分析:1的二進制位0000 0001右移1位之后變成0000 0000,即十進制整數0,16的二進制數值為0001 0000右移兩位之后變成十進制的4.

    6)位取反運算 ~

      位取反運算的實質是將參與運算的數據,按對應的二進制數逐位反轉,即1取反后變成0,0取反變成1。

      select 5&~1;  返回值=4

 

五、運算符優先級

  

 

    

  

 

  

        

       

      

     

  

  

    

  

    

  

 

      

                                                                                        

 

 

                                                              

                                                                                          


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM