1. 程式人生 > >MySQL的運算符及其優先級

MySQL的運算符及其優先級

作用 eat 算數 pri 大於等於 左移 table 相關 邏輯或

+++++++++++++++++++++++++++++++++++++++++++
標題:MySQL的常見運算符
時間:2019年2月23日
內容:MySQL的常見運算符
作者:Bruce
重點:主要講述MySQL常見運算以及相關小實驗,最後講述運算符的優先級。
+++++++++++++++++++++++++++++++++++++++++++
1. 運算符概述
通過運用運算符從而通過更加靈活的方式使用表中的數據。MySQL的內部運算符極其豐富,主要分為四類:算數運算符、比較運算符、邏輯運算符和位移運算符。
1.1 算數運算符
算數運算符用於各類數值運算,其中包括加、減、乘、除和模五中運算。
1.2 比較運算符


比較運算符用於比較運算,其中包括大於、小於、等於、大於等於、小於等於和不等於六種運算,除此之外還包括in、between and、is null、greatest、least、like和regexp等。
1.3 邏輯運算符
邏輯運算符最終結果為TRUE或FALSE。該類運算符包括邏輯非、邏輯與、邏輯或和邏輯異或。
1.4 位運算符
位移運算符與預算操作數按照二進制位進行移位運算。其中包括位&、位或、位非(~)、位異或(^)、左移(<<)和右移(>>)六種。

2. 算數運算符
2.1 運算符的作用
技術分享圖片
2.2 運算應用舉例
mysql> create table num (
-> list_id int unsigned not null ,
-> num int not null ,
-> primary key(list_id) );
mysql> insert into num values(1,11),(2,22),(3,33);
mysql> select num+10 , num+20 , num+30 from num;
技術分享圖片


3. 比較運算符
3.1 運算符的作用
技術分享圖片
3.2 運算應用舉例
3.2.1 等值運算
mysql> select 1=0 , ‘1‘=1 , 2=2 , ‘b‘=‘b‘ , (1+3)=(2+2) , null=null ;
技術分享圖片

3.2.2 安全等值運算
操作數均為NULL時返回值為1,一方操作數為NULL時返回值為0。
mysql> select 1<=>0 , ‘1‘<=>1 , 2<=>2 , ‘b‘<=>‘b‘ , null<=>1 , null<=>null ;
技術分享圖片

3.2.3 運算符(!=、<、>、<=和>=)

mysql> select 1!=2 , ‘111‘>2 , 10>=5 , 20<=9 , 5<null;
技術分享圖片

3.2.4 is [not] null運算
mysql> create table num1 ( list_id int unsigned , num int );
mysql> insert into num1 values(1,1);
mysql> insert into num1 values(1,null);
mysql> insert into num1 values(null,null);
mysql> insert into num1 values(null,1);
技術分享圖片

3.2.5 between...and運算
mysql> create table num2 (id int primary key , stu_id int);
mysql> insert into num2 values(1,222);
mysql> insert into num2 values(2,333);
mysql> insert into num2 values(3,444);
mysql> insert into num2 values(4,555);
mysql> insert into num2 values(5,666);
技術分享圖片

3.2.6 LEAST運算符
語法格式為least(m1,m2...mn)。數值運算返回最小值;字符串運算,返回字母表中的順序靠前的字母;如果存在null,則返回null。
mysql> select least(1,2,3) , least(null,4,5) , least(‘asd‘,‘zxc‘,‘qwe‘) ;
技術分享圖片

3.2.7 greatest運算符
語法格式為greatest(m1,m2...mn)。數值運算返回最大值;字符串運算,返回字母表中的順序靠後的字母;如果存在null,則返回null。
mysql> select greatest(1,2,3) , greatest(‘qwe‘,‘asd‘,‘zxc‘) , greatest(‘qqq‘ , null , 1);
技術分享圖片

3.2.8 [not] in運算符
in運算用於判斷操作數是否存在於數據列表中的其中一個值,是則返回1,否則返回0;而not in與in的作用恰恰相反。
mysql> create table num4 (id int primary key , stu_id int);
mysql> insert into num4 values(1,1111);
mysql> insert into num4 values(2,2222);
mysql> insert into num4 values(3,3333);
mysql> insert into num4 values(4,4444);
mysql> insert into num4 values(5,5555);
mysql> select * from num4 where stu_id in (1111,2222,6666);
mysql> select * from num4 where stu_id not in (1111,2222,6666);
技術分享圖片

3.2.9 like運算符
like運算符是用於匹配字符串的,語法格式為"字段 like 匹配表達式"。匹配成功返回TRUE,否則返回FALSE。
like的兩種通配符:
%表示匹配任意0~n多個字符。
_表示匹配任意1個字符。
技術分享圖片
mysql> insert into list values(1,‘qwe‘,‘qwe‘);
mysql> insert into list values(2,‘asd‘,‘asd‘);
mysql> insert into list values(3,‘zxc‘,‘zxc‘);
mysql> insert into list values(4,‘zxcs‘,‘zxcs‘);
mysql> select * from list where username like ‘zx_‘;
mysql> select * from list where username like ‘zx%‘;
技術分享圖片

3.2.10 regexp運算符(正則表達式匹配)
語法格式為"字段 regexp 匹配表達式"。
滿足條件返回值為1;否則返回值為0;如果字段或匹配條件任意一個為null,則返回結果為null。
regexp通配符:
(1) ‘^‘ 匹配以指定的字符串開頭的字符串。
(2) ‘$‘ 匹配以指定的字符串結尾的字符串。
(3) ‘.‘ 匹配任意一個單個字符。
(4) ‘[...]‘ 匹配在方括號中的任意字符。([asd]、[a-z]、[0-9])
(5) ‘*‘ 匹配0或多個在其前面的字符。(‘x*‘、‘[0-9]*‘)
技術分享圖片
mysql> insert into list1 values(1,‘qwer‘,‘asdff‘);
mysql> insert into list1 values(2,‘xfvdb‘,‘zdnei‘);
mysql> insert into list1 values(3,‘kjegv‘,‘afwvub‘);
mysql> insert into list1 values(4,‘mmmmmm‘,‘ppppp‘);
mysql> select * from list1 where username regexp ‘^k[abcdefj]‘;
mysql> select * from list1 where username regexp ‘.m*m$‘;
技術分享圖片

4. 邏輯運算符
4.1 邏輯運算符的作用
邏輯運算符求職所得結果均為TRUE、FALSE或NULL。在MySQL中體現為1、0或null。
技術分享圖片

4.2 邏輯運算符詳解
4.2.1 NOT 或 !
操作數為null:取反後返回值為null;
操作數為非null:0的返回值為1,1的返回值為0。
技術分享圖片

4.2.2 AND 或 &&
操作數存在null:
操作數均為null時,返回值為null;
操作數存在其中一個為null時,與1運算結果為null,與0運算結果為0。
操作數均為非null:1與1運算為真,其他均為假。
技術分享圖片

4.2.3 OR 或 ||
操作數存在null:
操作數均為null時,返回值為null;
操作數其中一個為null時,與1運算時值為1,與0運算時值為0;
操作數均為非null:1與1運算時值為1,其他情況均為假。
技術分享圖片

4.2.4 XOR(異或)
操作數存在null時:運算結果均為null;
操作數為非null時:操作數相同時返回值為0,操作數相異時返回值為1。
技術分享圖片

5. 位運算符
5.1 位運算符的作用
技術分享圖片

5.2 位運算符詳解
5.2.1 位或運算符
技術分享圖片

5.2.2 位與運算符
技術分享圖片

5.2.3 位異或運算符
技術分享圖片

5.2.4 左(右)移位運算符
技術分享圖片

6. 運算符的優先級(重點掌握)
運算符由上到下優先級依次由低到高。
技術分享圖片











MySQL的運算符及其優先級