数据操纵语言
MySQL的运算符
1.算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)。
实例:
加:select 1+5;
减:select 2-5 ;
乘:select 2*3;
除:select 5/8; -- 做除法 结果为小数
商:select 8 div 5; -- 做除法 结果为整数
2.比较运算符
用来查询满足指定条件的记录。
运算符 | 作用 | 实例 | 结果 |
= | 等于 | select 1=0, 1=1, null=null; | 0 | 1 | null |
< = > | 安全的等于 | select 1< = >1, 2< = >0, null< = >null; | 1 | 0 | 1 |
! = (< >) | 不等于 | select 1 != 0, 1 != 1, null != null; | 1 | 0 | null |
<= | 小于等于 |
select ‘nyfq‘ <= ‘q‘, ‘nyfq‘ <= ‘nyfq‘,0<1; |
1 | 1 | 1 |
< | 小于 | select ‘f‘ < ‘v‘, ‘sdw‘<‘derf‘, 2<7; | 1 | 0 | 1 |
>= | 大于等于 | select ‘er‘ >=‘e‘, ‘swax‘>=‘erf‘, 8>=84; | 1 | 1 | 0 |
> | 大于 | select ‘nyfq‘>‘def‘, ‘wrw‘>‘dw‘, 45>25; | 1 | 1 | 1 |
is null | 判断一个值是否为null | select ‘‘ is null, null is null; | 0 | 1 |
isunll | 与 is null 作用相同 | select 0 isnull, null isnull; | 0 | null |
is not null | 判断一个值是否不为null | select null is not null, 5 is not null; | 0 | 1 |
least |
在有两个或多个参数时,返回最小值 |
select least(25,48), least(59,45,12); | 25 | 12 |
greatest |
当有两个或多个参数时,返回最大值 |
select greatest(54,59),greatest(48.3,48.2,67); | 59 | 67 |
between and | 判断一个值是否落在两个值之间 | select 2 between 15 and 1, 58 between 20 and 50; | 0 | 0 |
in |
判断一个值是 in 列表中的任意一个值 |
select 3 in(4,2,9), 4 in (1,4,9); | 0 | 1 |
not in |
判断一个值不是 in 列表中的任意一个值 |
select 3 not in (1,3,5), 4 not in (1,8,3); | 0 | 1 |
like | 通配符匹配/模糊匹配运算符 | select ‘asd‘ like ‘%ds‘, ‘123‘ like ‘%23%‘; | 0 | 1 |
regexp | 正则表达式 | select ‘JFBSYG‘ regexp ‘JF‘ ,‘ncudg‘ regexp ‘e‘; | 1 | 0 |
3.逻辑运算符
运算符 |
作用 |
实例 | 结果 |
not或者! | 逻辑非 |
select not false, not 1, not null; select ! false, ! 1, ! null; |
1 | 0 | null |
and或者&& |
逻辑与 |
select (true and 1), (0 and 1), (3 and 5), (1 and null); select (true && 1), (0 && 1), (3 && 5), (1 && null); |
1| 0 | 1| null |
or或者|| |
逻辑或 |
select (1 or 0), (0 or 0), (1 or null), (null or null); select (1 || 0), (0 || 0), (1 || null), (null || null); |
1| 0 | 1| null |
xor或者^ |
逻辑异或 |
select (1 xor 1), (0 xor 0), (1 xor 0),(null xor 1); select (1 ^ 1), (0 ^ 0), (1 ^ 0),(null ^ 1); |
0| 0 | 1| null |
4.位操作运算符
参与运算的操作数按二进制位进行运算。
运算符 | 作用 | 实例 | 结果 |
& | 位与 | select 2 & 3 & 4; | 0 |
| | 为或 | select 2 | 3; | 3 |
^ | 位异或 | select 2 ^ 3; | 1 |
<< | 位左移 | select 100 << 3; | 800 |
>> | 位右移 | select 100 >> 5; | 3 |
~ | 位取反,反转所有比特 | select ~3 , ~ 746598365389; | 18446744073709551612 | 18446743327111186226 |
5.运算符中的优先级
优先级 | 运算符 |
最低 | =(赋值运算), := |
↓ | || , or |
xor | |
&& , and | |
not | |
between , case , when , then , else | |
=(比较运算符), <=>, >=, >, <=, <, <>, !=, is, like, regexp,in | |
| | |
& | |
<<(位左移), >>(位右移) | |
-, + | |
*, /(div), %(mod) | |
^(位异或) | |
-(负号), ~(位反转) | |
最高 | ! |
可以看到,不同运算符的优先级是不同的,一般情况下,级别高的运算符先进行计算,如果级别相同,MySQL按表达式顺序从左往右依次计算。当然,在无法确定优先级的情况下,可以使用圆括号“()”来改变优先级,并且这样会使计算过程更加清晰。
MySQL中的转义字符
在字符串中某些序列具有特殊含义,这些序列均用(" \ ")开始。
\0 | ASCII (NULL)字符 |
\‘ | 单引号(‘ ‘ ’) |
\" | 双引号(‘ " ’) |
\b | 退格符 |
\n | 换行符 |
\r | 回车符 |
\t | Tab字符 |
\ | 反斜线(‘ \ ‘)字符 |
\% | ‘%‘字符 |
\ _ | ‘_‘字符 |
这些序列对大小写敏感。例如,‘ \ b ’解释为退格,但是‘ \ B ’解释为‘B’。