MySQL学习笔记9(运算符)

MySQL学习笔记9

运算符

运算符是用来连接表达式中各个操作数的符号,其作用是用来指明对操作数所进行的运算。MySQL运算符包括四类,分别是算术运算符、比较运算符、逻辑运算符和位运算符。

算术运算符:包括加、减、乘、除、求余这集中算术运算符。

比较运算符:包括大于、小于、等于、不等于、为空等比较运算符。主要用于数值的比较、字符串的匹配等方面,尤其值得注意的是LIKE、IN、BETWEEN AND、IS NULL等都是比较运算符,还有用于使用正则表达式的REGEXP也是比较运算符。

逻辑运算符:包括与、或、非、异或等逻辑运算。

位运算符:包括按位与、按位或、按位取反、按位异或、按位左移和按位右移等位运算。

1:算术运算符

SELECT a ,a+5+2, a-5-2, a*5*2 FROM t1;

运行结果:

a a+5+2 a-5-2 a*5*2
24 31 17 240
SELECT a ,a/3, a DIV 3, a%3,MOD(a,3) FROM t1;

运行结果:

a a/3 a DIV 3 a%3 MOD(a,3)
24 8.0000 8 0 0
SELECT 5/0, 5 DIV 0,5%0 ,MOD(5,0);

运行结果:

5/0 5 DIV 0 5%0 MOD(5,0)
NULL NULL NULL NULL

2:比较运算符

2.1 运算符“=”

空值(NULL)不能使用“=”来判断

SELECT a ,a=24,a=20 FROM t1;

SELECT 'b'='b','b'='c',NULL=NULL;

2.2 运算符“< >”和“!=”

这两个符号也不能用来判断空值(NULL)

SELECT a,a<>23,a!=23,a!=24,a!=NULL FROM t1;

SELECT 'b'<>'b','b'!='c';

2.3 运算符“<=>”

“<=>”的作用与“=”是一样的,这个符号可以用来判断空值(NULL)。

2.4 运算符“>”、“>=”、“<”、“>=”

这些运算符都不能用来判断空值(NULL)

2.5 运算符“IS NULL”

判断操作数是否为空值(NULL),IS NOT NULL刚好和IS NULL相反。

SELECT a ,a IS NULL,a IS NOT NULL FROM t1;

运行结果:

a a IS NULL a IS NOT NULL
24 0 1

2.6 运算符“BETWEEN AND”

SELECT a, a BETWEEN 24 AND 26 FROM t1;

运行结果:

a a BETWEEN 24 AND 26
24 1

2.7 运算符“IN”

“IN”用来判断操作数是否落在某个集合中。

2.8 运算符“LIKE”

SELECT s,s LIKE 'beijing',s LIKE '___jing',s LIKE 'b%',s LIKE 's%'FROM t2;

运行结果:

s s LIKE ‘beijing’ s LIKE ‘___jing’ s LIKE ‘b%’ s LIKE ‘s%’
beijing 1 1 1 0

3:逻辑运算符

逻辑运算符用来判断表达式的真假。逻辑运算符的返回结果只有1和0。逻辑运算符又称为布尔运算符。MySQL中支持四种逻辑运算符。这四种逻辑运算符分别是与、或、非和异或。

3.1 与运算

“&&”或者AND表示与运算。

SELECT -1&&2&&3, 0&&3, 0&&NULL, 3&&NULL;
-1&&2&&3 0&&3 0&&NULL 3&&NULL
1 0 0 NULL

3.2 或运算

“||”或则会OR表示或运算。

SELECT -1||1||NULL||0, 3||NULL,0||NULL,NULL||NULL,0||0;
-1||1||NULL||0 3||NULL 0||NULL NULL||NULL 0||0
1 1 NULL NULL 0

3.3 非运算

“!”或者NOT表示非运算。

SELECT !1,!0.3,!-3,!NULL,!0;
!1 !0.3 !-3 !NULL !0
0 0 0 NULL 1

3.4 异或运算

XOR表示异或运算。只要其中任何一个操作数为NULL时,结果返回NULL;如果都是非0的数字或者都是0时,结果返回0;如果有一个是非0,另一个是0时,结果返回1。

SELECT NULL XOR 1, NULL XOR 0,3 XOR 1, 1 XOR 0,0 XOR 0,3 XOR 2 XOR 0 XOR 1;
NULL XOR 1 NULL XOR 0 3 XOR 1 1 XOR 0 0 XOR 0 3 XOR 2 XOR 0 XOR 1
NULL NULL 0 1 0 1

4:位运算符

位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,然后进行位运算。然后再将计算结果从二进制数变回十进制数。MySQL支持六种位运算符,分别是按位与、按位或、按位取反、按位异或、按位左移和按位右移。

符号 名称
& 按位与
| 按位或
~ 按位取反
^ 按位异或
<< 按位左移
>> 按位右移

4.1 按位与

“&”表示按位与,进行该运算时,数据库系统会先将十进制的数转换为二进制的数,然后对应操作数的每个二进制位上进行与运算。运算完成后再将二进制变回十进制数。

SELECT 5&6,5&6&7;

运行结果:

5&6 5&6&7
4 4

4.2 按位或

“|”表示按位或,将操作数化为二进制后。每位都进行或运算。

SELECT 5|6,5|6|7;

运行结果:

5 6 5 6 7
7 7

4.3 按位取反

SELECT ~1;

运行结果:

~1
18446744073709551614

4.4 按位异或

4.5按位左移和按位右移

“<<”表示按位左移。“m<

SELECT 5<<2,5>>2;

运行结果:

5<<2 5>>2
20 1

5:运算符的优先级

由于在实际应用中可能需要同时使用多个运算符。这就必须考虑运算符的运算顺序。MySQL的表达式都是从左到右开始运算,那个运算符的优先级高,哪个运算符先进行计算。

优先级 运算符
1(最高) !
2 -(负号),~(按位取反)
3 ^(按位异或)
4 *,/(DIV),%(MOD)
5 +,-
6 >>,<<
7 &
8 |
9 =(比较运算),<=>,<,<=,>,>=,!=,<>,IN,IS NULL,LIKE,REGEXP
10 BETWEEN AND,CASE,WHEN,THEN,ELSE
11 NOT
12 &&,AND
13 XOR
14 ||,OR
15(最低) =(赋值运算),:=

我们可以看出,不同运算符的优先级是不同的。在无法确定优先级的情况下,可以使用圆括号()来改变优先级,并且这样会使计算过程更加清晰。

你可能感兴趣的:(MySQL学习笔记9(运算符))