MySQL(14)-----运算符和优先级

MySQL支持多种类型的运算符,这些运算符可以用来连接表达式的项。这些类型主要包括算术运算符、比较运算符、逻辑运算符、位运算符。本节将通过实例对MySQL支持的这几种运算符进行详细的介绍。

1.算术运算符

MySQL支持的算术运算符:加、减、乘、除和模运算。它们是最常使用、最简单的一类运算符。下表列出了这些运算符极其作用。

 

运算符作用
+加法
-减法
*乘法
/,DIV除法,返回商
%,MOD除法,返回余数

简单描述一下这几种运算符的使用方法:

“+”:用于获取一个或多个值得和。

“-”:用于从一个值中减去另一个值。

“*”:使用数字相乘,得到两个或多个值的乘积。

“/”:用一个值除以另一个值得到商。

“%”:用一个值除以另一个值得到余数。

下面通过实例学习一下各种运算符的使用:

【这里不一一列实例了,直接给出全部的运算符使用方式,SQL语句也可根据各运算符进行拆分书写】

算术运算符的使用


 

注意】在除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL

示例:

 

对于模运算,可使用MOD(a,b)函数a%b效果一样:

 

2.比较运算符

熟悉了最简单的算术运算符之后,我们再来看一下比较运算符。当使用select语句进行查询时,MySQL允许用户对表达式左边操作数和右边操作数进行比较,比较结果为真,则返回1,为假则返回0,比较结果不确定则返回NULL。

MySQL支持的比较运算符:

 

运算符作 用
=等于
<>或!=不等于
<=>NULL安全的等于(NULL-safe)
<小于
<=小于等于
>大于
>=大于等于
BETWEEN存在于指定范围
IN存在于指定集合
IS NULL为NULL
IS NOT NULL不为NULL
LIKE通配符匹配
REGEXP或RLIKE正则表达式匹配

比较运算符可以用于比较数字、字符串和表达式。数字作为浮点数比较,字符串以不区分大小写的方式进行比较。下面通过实例学习一下各种运算符的使用:
▲“=”运算符,用于比较运算符两侧的操作数是否相等,如果两侧操作数相等,则返回值为1,否则为0。

【注意】NULL不能用于“=”比较

 

▲“<>”运算符,和“=”相反,如果两侧操作数不等,则值为1,否则为0。

【注意】NULL不能用于“<>”比较。

 

▲“<=>”运算符,和“=”类似,在操作数相等时值为1,不同之处在于即使操作的值为NULL也可以正确地比较。

 

▲“<”运算符,当左侧操作数小于右侧操作数时,其返回值为1,否则为0。

mysql>select 'a'<'b','a'<'a','a'<'c',1<2;

 

▲“<=”运算符,当左侧操作数小于等于右侧操作数时,其返回值为1,否则为0。

 

▲“>”运算符、“>=”运算符同理。

【图略】

 

▲“BETWEEN”运算符的格式为“a BETWEEN min AND max”,当a大于等于min并且小于等于max,则返回值为1,否则返回0;当操作数a、min、max类型相同时,此表达式等价于(a>=min and a<=max),当操作数类型不同时,比较时会遵循类型转换原则进行转换后,再进行比较运算。

mysql>select 10 between 10 and 20,9 between 10 and 20;

 

▲“IN“运算符的使用格式:”a IN (value1,value2,....)“,当a的值存在于表中时,则整个表达式返回值为1,否则返回0。

 

▲“IS NULL”运算符使用格式为“a IS NULL”,a的值为NULL,则返回1,否则返回0;

▲“IS NOT NULL”运算符的使用格式为“a IS NOT NULL”,和“IS NULL”相反。a的值为不为NULL,则返回值1,否则返回0。

 

▲“LIKE”运算符使用格式“a LIKE %123%”,当a中含有字符串“%123%”时,则返回值为1,否则返回0。

 

▲“REGEXP”运算符的使用格式为“str REGEXP str_pat”,当str字符串中含有str_pat匹配的字符串是,则返回值为1,否则返回为0。

 

3.逻辑运算符

逻辑运算符,及布尔运算符,确认表达式的真和假。

具体分类如下:

 

运算符作用
NOT 或 !逻辑非
AND 或 &&逻辑与
OR 或 ||逻辑或
XOR逻辑与或

 

▲“NOT”或“!”,返回和操作数相反的结果:当操作数为0(假),则返回值为1,否则返回值为0.

 

【注】NOT NULL的返回值为NULL。

 

▲“AND”或“&&”,逻辑与运算。当所有的操作数均为非零值并且不为null时,计算所得结果为1,当一个或多个操作数为0时,所得结果为0,操作数中有任何一个为null则返回值为null。

 

▲“OR”或“||”,逻辑或运算。当两个操作数均为非null值时,如有任意一个操作数为非零值,则结果为1,否则结果为0。当有一个操作数为null时,如另一个操作数为非零值,则结果为1,否则结果为null。假如两个操作数均为null,则所得结果为null。

 

▲“XOR“,逻辑异或。当任意一个操作数为null时,返回值为null。对于非null的操作数,如果两个的逻辑真假值相异,则返回结果1,否则返回0.

 

4.位运算符

位运算符是将给定的数据转化为二进制后,对各个数据每一位进行制定的逻辑运算,得到的二进制结果转换为十进制数后就是位运算的结果。MySQL支持6中位运算符,如下表所示。

运算符作用
&位与(位AND)
|位或(位OR)
/\位异或(位XOR)
~位取反
>>位右移
<<位左移

可以发现,位运算符中的位与&和位或|和前面介绍的逻辑与和逻辑或非常类型。其他操作符和逻辑操作有所不同。

▲“&,位与“,对多个操作数的二进制位做逻辑与操作。如2&3,2对应的二进制数是10,3对应11,所有10&11的结果是10,十进制数字还是2,来看实际结果:

▲“^,位异或“

▲“~,位取反“对二进制位数做NOT操作,对1进行取反,实际结果:

结果令人疑惑,1的位取反怎么会是这么大的数字?在MySQL中,常量数字默认是以8个字节来表示,8个字节就是64位,常量1的二进制表示为63个0,加一个1,位取反后就是63个“1”加一个“0”,转为二进制数就如:

5.运算符的优先级

前面介绍了MySQL支持的各种运算符的使用方法。在实际的应用中,很可能将这些运算符进行混合运算,那么应该先进行哪些运算符的操作呢。

优先级顺序运算符
1:=
2||、OR、XOR
3&&、AND
4NOT
5BETWEEN、CASE、WHEN、THEN、ELSE
6=、<=>、>=、>、<=、<、<>、!=、IS、LIKE、REGEXP、IN
7|
8&
9<<、>>
10-、+
11*、/、DIV、MOD
12^
13-(一元减号)、~(一元比特反转)
14

实际上,很少将这些优先级熟练的记忆,很多情况下我们都是使用"()"将需要优先的操作括起来,这样既起到了优先的作用,又使得其他用户看起来更容易理解。


愿你就像早晨八九点钟的太阳,活力十足,永远年轻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洒家肉山大魔王

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值