1:算数运算符
运算符 | 作用 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/,DIV | 除法 ,返回商 |
% ,MOD() | 除法,返回余数 |
例:
mysql> select 1+2,3-2,5*3,5/3,5%3;
+-----+-----+-----+--------+-----+
| 1+2 | 3-2 | 5*3 | 5/3 | 5%3 |
+-----+-----+-----+--------+-----+
| 3 | 1 | 15 | 1.6667 | 2 |
+-----+-----+-----+--------+-----+
1 row in set (0.06 sec)
mysql> SELECT 5 DIV 3,MOD(5,3);
+---------+----------+
| 5 DIV 3 | MOD(5,3) |
+---------+----------+
| 1 | 2 |
+---------+----------+
1 row in set (0.05 sec)
2:比较运算符
运 算 符 | 作 用 |
---|---|
= | 等于 |
<>或!= | 不等于 |
<=> | NULL安全的等于(NULL-safe) |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
BETWEEN | 存在于指定范围 |
IN | 存在于指定集合 |
IS NULL | 为NULL |
IS NOT NULL | 不为NULL |
LIKE | 通配符匹配 |
REGEXP或RLIKE | 正则表达式匹配 |
例:
“=”判断运算符两侧是否相等,相等返回1,否则返回0,NULL不能使用“=”比较。
mysql> select 1=1,1=0,NULL=NULl;
+-----+-----+-----------+
| 1=1 | 1=0 | NULL=NULl |
+-----+-----+-----------+
| 1 | 0 | NULL |
+-----+-----+-----------+
1 row in set (19.07 sec)
“<>”运算符,和“=”相反,如果两侧操作数不等,则值为1,否则为0,NULL不能用于”<>“比
较。
mysql> SELECT 1<>0,1<>1,NULL<>NULL;
+------+------+------------+
| 1<>0 | 1<>1 | NULL<>NULL |
+------+------+------------+
| 1 | 0 | NULL |
+------+------+------------+
1 row in set (0.06 sec)
“<=>” 运算符,和“=“类似,在操作叔相等时为1,不同之处在于即使操作的值为NULL也可以进行比较。
mysql> SELECT 1<=>1,2<=>0,0<=>0,NULL<=>NULL;
+-------+-------+-------+-------------+
| 1<=>1 | 2<=>0 | 0<=>0 | NULL<=>NULL |
+-------+-------+-------+-------------+
| 1 | 0 | 1 | 1 |
+-------+-------+-------+-------------+
1 row in set (0.06 sec)
"<" 运算符,当左侧操作数小于右侧操作数时,其返回值为1,否则其值为0.
mysql> select 'a'<'b','a'<'a','a'<'c',1<2;
+---------+---------+---------+-----+
| 'a'<'b' | 'a'<'a' | 'a'<'c' | 1<2 |
+---------+---------+---------+-----+
| 1 | 0 | 1 | 1 |
+---------+---------+---------+-----+
1 row in set (0.07 sec)
剩余不在举例;
3:逻辑运算符
运 算 符 | 作 用 |
---|---|
NOT或 ! | 逻辑非 |
AND 或 && | 逻辑与 |
OR 或 || | 逻辑或 |
XOR | 逻辑异或 |
例:
"NOT" 或 "!"表示逻辑非。返回和操作数相反的结果:当操作数为0(假),则返回值为1,否则值为0.
但是有一点除外,那就是 NOT NULL 的返回值为NULL,
mysql> select not 0, not 1, not null;
+-------+-------+----------+
| not 0 | not 1 | not null |
+-------+-------+----------+
| 1 | 0 | NULL |
+-------+-------+----------+
1 row in set (0.00 sec)
"AND"或"&&" 表示逻辑与运算。当所有操作数均为非零值并且不为NULL时,计算所得结果为1,
当一个或多个操作数为0时,所得结果为0,操作数中有任何一个为NULL则返回值为NULL
mysql> select (1 and 1),(0 and 1),(3 and 1),(1 and null);
+-----------+-----------+-----------+--------------+
| (1 and 1) | (0 and 1) | (3 and 1) | (1 and null) |
+-----------+-----------+-----------+--------------+
| 1 | 0 | 1 | NULL |
+-----------+-----------+-----------+--------------+
1 row in set (0.00 sec)
""或""表示逻辑或运算。当两个操作数均为非NULL值时,如有任意一个操作数为非零值,则结果为1,
否则结果为0.当有一个操作数为NULL时,如另一个操作数为非零值,则结果为1,否则结果为NULL。
假如两个操作数均为NULL,则所得结果为NULL。
mysql> select (1 or 1), (1 or 0), (0 or 0),(1 or null),(null or null);
+----------+----------+----------+-------------+----------------+
| (1 or 1) | (1 or 0) | (0 or 0) | (1 or null) | (null or null) |
+----------+----------+----------+-------------+----------------+
| 1 | 1 | 0 | 1 | NULL |
+----------+----------+----------+-------------+----------------+
1 row in set (0.00 sec)
"XOR" 表示逻辑异或。当任意一个操作数为NULL时,返回值为NULL。对于非NULL的操作数,
如果两个逻辑真假值相异,则返回结果1,否则返回0.
mysql> select 1 xor 1,0 xor 0, 1 xor 0, 0 xor 1 ,null xor 1;
+---------+---------+---------+---------+------------+
| 1 xor 1 | 0 xor 0 | 1 xor 0 | 0 xor 1 | null xor 1 |
+---------+---------+---------+---------+------------+
| 0 | 0 | 1 | 1 | NULL |
+---------+---------+---------+---------+------------+
1 row in set (0.00 sec)
4:位运算符
运算符 | 作用 |
---|---|
& | 位与(位 AND) |
| | 位与(位 OR) |
^ | 位异或(位XOR) |
~ | 位取反 |
>> | 位右移 |
<< | 位左移 |
例:
略
5:运算符的优先级
运 算 符 | 作 用 |
---|---|
1 | := |
2 | ||、OR、XOR |
3 | &&、AND |
4 | NOT |
5 | BETWEEN、CASE、WHEN和ELSE |
6 | =、<=>、>=、>、<=、<、<>、!=、IS、LIKE、REGEXP和IN |
7 | | |
8 | & |
9 | <<和>> |
10 | +和- |
11 | *、/、DIV、%和MOD |
12 | ^ |
13 | -(一元减号)和~(一元比特反转) |
14 | ! |