【Mysql上分之路】第七篇:Mysql运算符

冲

MySQL运算符

在MySQL中,运算符是执行特定算术或者逻辑操作的符号,MySQL 所提供的运算符可以直接对表中数据或字段进行运算,运算符连接表达式中各个操作数,作用是用来指明对操作数所进行的运算,进而实现用户的新需求,增强了 MySQL 的功能

MySQL运算符分类

MySQL运算符支持四种运算符:算术运算符、比较运算符、逻辑运算符、位运算符

在这里插入图片描述

算术运算符

算术运算符是 SQL 中最基本的运算符,MySQL 支持的运算符包括加、减、乘、除和取余运算,它们是最常用、最简单的一类运算符

常见的运算符的作用和使用方法

Mysql中算术运算符
运算符作用
+加法运算
-减法运算
*乘法运算
/除法运算,返回商
%模运算,求余运算,返回余数
mysql运算符算术运算符

比较运算符

MySQL允许用户对表达式的左边操作数和右边操作数进行比较,比较结果为真,则返回 1,为假则返回 0,比较结果不确定则返回 NULL

比较运算符可以用于比较数字、字符串和表达式的值。注意,字符串的比较是不区分大小写的

Mysql中比较运算符
运算符作用
=等于
<=>安全的等于
<>(!=)不等于
<=小于等于
>=大于等于
>大于
IS NULL判断一个值是否为NULL
IS NOT NULL判断一个值是否不为NULL
LEAST在有两个或两个以上参数时返回最小值
GREATEST有两个或多个参数时返回最大值
BETWEEN AND判断一个值是否落在两个值之间
ISNULL与IS NULL一值
IN判断一个值是IN列表中的任意一值
NOT IN判断一个值不是IN列表中的任意一值
LIKE通配符匹配
REGEXP正则表达式匹配

等于运算符=

等号"="用来判断数字、字符串和表达式是否相等。相等返回值为1,不相等返回值为0

数值比较规则:

  1. 若有一个或两个参数为NULL,则比较运算的结果为NULL
  2. 若同一个比较运算中的两个参数都是字符串,则按照字符串进行吧比较
  3. 若两个参数都为整数,则按照整数进行比较
  4. 若一个字符串和数字进行相等判断,则Mysql会自动将字符串转换为数字

mysql运算符等于运算符=

安全等于运算符<=>

<=> 操作符和 = 操作符类似,不过 <=> 可以用来判断 NULL 值,具体语法规则为:

  • 当两个操作数均为 NULL 时,其返回值为 1 而不为 NULL;
  • 而当一个操作数为 NULL 时,其返回值为 0 而不为 NULL
mysql运算符安全等于号

不等于运算符<>、!=

不等于运算符用来判断数字、字符串、表达式不相等的判断。如果不相等返回值为1,否则返回值为0。但是不能判断空值NULL

mysql运算符不等于

小于等于运算符<=

<= 是小于等于运算符,用来判断左边的操作数是否小于或者等于右边的操作数;如果小于或者等于,返回值为 1,否则返回值为 0;如果两侧操作数有一个是 NULL,那么返回值也是 NULL

mysql运算符小于等于

大于等于运算符>=

>= 是大于等于运算符,用来判断左边的操作数是否大于或者等于右边的操作数;如果大于或者等于,返回值为 1,否则返回值为 0;如果两侧操作数有一个是 NULL,那么返回值也是 NULL

mysql运算符大于等于

IS NULL(ISNULL)、IS NOT NULL

IS NULL 或 ISNULL 运算符用来检测一个值是否为 NULL,如果为 NULL,返回值为 1,否则返回值为 0。ISNULL 可以认为是 IS NULL 的简写,去掉了一个空格而已,两者的作用和用法都是完全相同的

IS NOT NULL 运算符用来检测一个值是否为非 NULL,如果是非 NULL,返回值为 1,否则返回值为 0

mysql运算符isnotnull

BETWEEN AND

BETWEEN AND 运算符用来判断表达式的值是否位于两个数之间,或者说是否位于某个范围内,它的语法格式如下:

expr BETWEEN min AND max

expr 表示要判断的表达式,min 表示最小值,max 表示最大值。如果 expr 大于等于 min 并且小于等于 max,那么返回值为 1,否则返回值为 0

mysql运算符betweenand

IN、NOT IN运算符

MySQL中的 IN 运算符用来判断表达式的值是否位于给出的列表中;如果是,返回值为 1,否则返回值为 0

NOT IN 的作用和 IN 恰好相反,NOT IN 用来判断表达式的值是否不存在于给出的列表中;如果不是,返回值为 1,否则返回值为 0

IN 和 NOT IN 的语法格式如下

expr IN ( value1, value2, value3 ... valueN )
expr NOT IN ( value1, value2, value3 ... valueN )
expr 表示要判断的表达式,value1, value2, value3 ... valueN 表示列表中的值

mysql运算符in-notin

LIKE运算符

语法格式:expr LIKE 匹配条件,LIKE用来匹配字符串,如果expr满足匹配条件,则返回值为1(TRUE)、如果不匹配则返回值为0(FALSE)。若expr或匹配条件中任意一个为NULL,则结果为NULL。

LIKE运算符在进行匹配时,通过搭配两种通配符使用:%,_

  • ‘%’:匹配任何数目的字符,甚至包括零字符
  • ‘_’:只能匹配一个字符

REGEXP 运算符

语法格式:expr REGEXP 匹配条件,REGEXP运算符是用来匹配字符串,如果expr满足匹配条件,返回1,如果不满足则返回0;若expr或匹配条件中任意一个为NULL,则结果为NULL

REGEXP运算符在进行匹配时,通常搭配通配符使用:‘^’、‘$’、‘.’、‘[…]’、‘*’

  • ‘^’:匹配以该字符后面的字符开头的字符串
  • ‘$’:匹配以该字符后面的字符结尾的字符串
  • ‘.’:匹配任何一个字符
  • ‘[…]’:匹配在方括号内的任何字符
  • ‘*’:匹配0个或多个在它前面的字符

逻辑运算符

逻辑运算符又称为布尔运算符,用来确定表达式的真和假

Mysql中的逻辑运算符
运算符作用
NOT或!逻辑非
AND & &&逻辑与
OR或则||逻辑或
XOR逻辑异或

逻辑非运算符(NOT、!)

NOT和 ! 都是逻辑非运算符,返回和操作数相反的结果,具体语法规则为:

  • 当操作数为 0(假)时,返回值为 1
  • 当操作数为非零值时,返回值为 0
  • 当操作数为 NULL 时,返回值为 NULL
mysql运算符逻辑非

逻辑与运算符(AND、&&)

AND 和 && 都是逻辑与运算符,具体语法规则为:

  • 当所有操作数都为非零值并且不为 NULL 时,返回值为 1;
  • 当一个或多个操作数为 0 时,返回值为 0;
  • 操作数中有任何一个为 NULL 时,返回值为 NULL
mysql运算符逻辑与

逻辑或运算符(OR、|| )

OR 和 || 都是逻辑或运算符,具体语法规则为:

  • 当两个操作数都为非 NULL 值时,如果有任意一个操作数为非零值,则返回值为 1,否则结果为 0;
  • 当有一个操作数为 NULL 时,如果另一个操作数为非零值,则返回值为 1,否则结果为NULL;
  • 假如两个操作数均为 NULL 时,则返回值为 NULL
mysql运算符逻辑或

异或运算符(XOR)

XOR 表示逻辑异或,具体语法规则为:

  • 当任意一个操作数为 NULL 时,返回值为 NULL;
  • 对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则返回值为 0;
  • 如果一个为0值,另一个为非 0 值,返回值为 1
mysql运算符逻辑异或

位运算

位运算符是用来对二进制字节中的位进行测试、移位或者测试处理,位运算一般用于操作整数,对整数进行位运算才有实际的意义。整数在内存中是以补码形式存储的,正数的补码形式和原码形式相同,而负数的补码形式和它的原码形式是不一样的,这一点大家要特别注意;这意味着,对负数进行位运算时,操作的是它的补码,而不是它的原码

Mysql中提供的位运算符有按位或(|)、按位与(&)、按位异或(^)、按位左移(<<)、按位右移(>>)、按位取反(~)

Mysql中位运算符
运算符作用
|位或
&位与
^位异或
<<位左移
>>位右移
~位取反,反转所有比特

位或运算符 |

位或运算符的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑或运算。对应的二进制位有一个或两个为1则该位运算结果为1,否则为0

mysql运算符位或运算符

10 的补码为 1010,15 的补码为 1111,按位或运算之后,结果为 1111,即整数 15;9 的补码为 1001,4 的补码为 0100,2 的补码为 0010,按位或运算之后,结果为 111,即整数 15

位与运算符&

位与运算符的实质是将参与运算的两个数据,按对应的二进制数逐位进行逻辑与运算。对应的二进制位两个都为1,则该位的运算结果为1,否则为0

mysql运算符位与运算符

10 的补码为 1010,15 的补码为 1111,按位与运算之后,结果为 1010,即整数 10;9 的补码为 1001,4 的补码为 0100,2 的补码为 0010,按位与运算之后,结果为 0000,即整数 0

位异或运算符^

位异或运算符的实质是将参与运算的两个数据,按照对应的二进制数诸位进行逻辑异或运算。对应的二进制位两个都为1或两个都不为1,则该位运算结果为0,否则为1

mysql运算符位异或运算符

10 的补码为 1010,15 的补码为 111,按位异或运算之后,结果为 0101,即整数 5;1 的补码为 0001,0 的补码为 0000,按位异或运算之后,结果为 0001;1 和 1 本身二进制位完全相同,因此结果为 0

位左移运算符<<

语法格式:expr<<n,n表示为expr要移位的位数

位左移运算符<<使指定的二进制值所有位都左移指定的位数。左移指定位数之后,左边高位的数值将被移除并丢弃,右边地位空出的位置用0补齐

mysql运算符位左移

1 的补码为 0000 0001,左移两位之后变成 0000 0100,即整数 4;4 的补码为 0000 0100,左移两位之后变成 0001 0000,即整数 16

位右移运算符>>

语法格式:expr>>n,n表示为expr要移位的位数

位右移运算符>>使指定的二进制值所有位都右移指定的位数。右移指定位数之后,右边低位的数值将被移除并丢弃,左边高位空出的位置用0补齐

mysql运算符右移

1 的补码为 0000 0001,右移 1 位之后变成 0000 0000,即整数 0;16 的补码为 0001 0000,右移两位之后变成 0000 0100,即整数 4

位取反运算符~

位取反运算的实质是将参与运算的数据,按对应的二进制数逐位反转,即1取反之后变为0,0取反之后变为1

mysql运算符位反运算符

常量 1 的补码为 63 个‘0‘加 1 个’1‘,位取反后就是 63 个’1‘加一个’0‘,转换为二进制后就是 18446744073709551614

运算符优先级

运算符的优先级决定了不同的运算符在表达式中计算的先后顺序

优先级由低到高排列运算符
1=(赋值运算)、:=
2II、OR
3XOR
4&&、AND
5NOT
6BETWEEN、CASE、WHEN、THEN、ELSE
7=(比较运算)、<=>、>=、>、<=、<、<>、!=、 IS、LIKE、REGEXP、IN
8|
9&
10<<、>>
11-(减号)、+
12*、/、%
13^
14-(负号)、〜(位反转)
15!

一般情况下,级别高的运算符优先进行计算,如果级别相同,MySQL 按表达式的顺序从左到右依次计算

总结

MySQL 所提供的运算符可以直接对表中数据或字段进行运算,运算符可以分为算术运算符、比较运算符、逻辑运算符、位运算符

赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤👍,peace&love

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值