【MySQL复习笔记】:运算符

214 阅读6分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

Mysql学习笔记.png

1️⃣前言

  • 数据库中的表结构一旦建立后,表中的数据就有了意义
  • 通过MySQL运算符进行运算,我们可以获得表结构以外的另一种数据

而在MySQL中,运算符有四种:

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符

下面,我们就来看看各种运算符的特点!


2️⃣算术运算符

✔️表格

下面表格列举了所有算术运算符:

符号含义
+加法
-减法
*乘法
/DIV除法
%MOD取余

✨备注:

  • + 用于获得一个或多个值的和
  • - 用于一个值减去另一个值
  • * 用于得到两个或多个值的乘积
  • / 用一个值除以另一个值得到商
  • % 用于一个值除以另一个值得到余数

💡举例

image.png

  • 需要注意的是,当除数为0时 ,将视为非法除数,其返回值为 NULL。

如图:

image.png


3️⃣比较运算符

✔️表格

下面表格列举了所有比较运算符:

符号含义
=等于
<=>安全等于
<>!=不等于
<小于
<=小于等于
>大于
>=大于等于
IS NULL是否为NULL
IS NOT NULL是否不为NULL
BETWEEN AND区间,在两值之间
IN判断值是否在列表中
NOT IN判断值是否不在列表中
LIKE通配符匹配
REGEXP正则表达式匹配

✨备注:

  • MySQL 允许用户对表达式的两侧的操作数进行比较
  • 如果比较的结果为真,则返回 1
  • 结果为假则返回 0
  • 如果比较结果不确定,则返回 NULL
  • NULL 不能用于比较,会直接返回 NULL

💡举例

🌱例子1:

=号运算符----用于判断运算符两侧的操作数是否相等

image.png


🌱例子2:

<=>运算符----=运算符类似,不同在于<=>运算符可以比较 NULL

image.png


🌱例子3:

<>运算符或!运算符----是否不相等

image.png


🌱例子4:

<运算符----当左侧操作数小于右侧操作数时,返回值为 1, 否则返回 0

image.png

类似的,<=,>,>=等运算符的用法也是这样


🌱例子5:

IS NULLIS NOT NULL 分别表示是否为 NULL是否不为NULL

  • 如果为NULL,则返回1,否则返回0

image.png


🌱例子6:

BETWEEN AND的语法是:

select a between l and r ;

这就相当于判断a是否在区间[l , r],是就返回1,否则返回0.


image.png

🌱例子7:

IN 符号----用于判断某值是否在一个列表中

  • 语法为: value in (value1,value2,value3);

image.png

NOT IN 的用法上述IN的用法类似。


🌱例子8:

LIKE符号----用于模糊匹配,其语法大致为:xxx like 'xx%'

  • 如果相似,就返回1,否则返回0

image.png


🌱例子9:

REGEXP符号----用于正则表达式匹配,语法为:str1 regexp str2;

  • 如果匹配则返回1,否则返回0

image.png


4️⃣逻辑运算符

  • 逻辑运算符指的就是布尔运算符,判断真或假

✔️表格

下面表格列举了所有逻辑运算符:

符号含义
!NOT逻辑非(真变假,假变真)
&&AND逻辑与(所有条件满足时才为真)
||OR逻辑或(有一个条件为真就是真)
XOR逻辑异或(不同为真,相同为假)

✨备注:

需要注意的是:

  • NOT NULL 的返回值为 NULL

💡举例

🌱例子1:

  • NOT!表示逻辑非

当操作数为 0(假) ,则返回 1,否则返回 0

image.png


🌱例子2:

  • AND&& 表示逻辑与

当所有操作数不为0并且不为 NULL 时,则返回1

image.png

反之,只要有一个操作数为0 ,就返回 0

image.png

如果操作数没有0,但有一个操作数为null,就返回 null

image.png


🌱例子3:

  • OR|| 表示逻辑或

如果操作数都不为NULL,此时只要有一个非零值,就返回1

image.png

如果操作数全是0,就返回0

image.png

1 or null 的返回值是1

0 or null 的返回值是null

null or null 的返回值是null

image.png


🌱例子4:

  • XOR 表示逻辑异或

只要有一个操作数为 NULL 时,返回 NULL

image.png

当所有操作数都不为NULL

如果两个操作数的逻辑值不同,就返回1,否则返回0

image.png


5️⃣位运算符

一说到位运算符,,就肯定和二进制有关。

位运算就是将给定的操作数转换为二进制后,对各个操作数的每一位都进行指定的逻辑运算

再将得到的二进制结果给转换为十进制,这就是位运算的结果。

✔️表格

下面表格列举了所有位运算符:

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

💡举例

🌱例子1:

  • ~符号----指的是按位取反,注意,这里是一个操作数。

  • 按位取反,就是将值转换为二进制数,再做NOT操作。

来看一个有趣的例子:

image.png

为什么会这样?

  • 事实上,MySQL的数值,默认是以8个字节显示的,即64位

那么数值1就是:

取反的效果就是:1变为0,0变为1.

显然,1取反后的结果就是63个1加上一个0

如图:

image.png

此时再转换为十进制数就是18446744073709551614

如图:

image.png

🌱例子2:

  • &符号----指的是按位与,将两个操作数转换为二进制再进行 & 操作

如图:

image.png

为什么10 & 12 = 8

  • 10 & 12 = 8 的意思是:

  • 10转换为二进制数101012转换为二进制数1100

  • 那么1010 & 1100 就等于 1000

  • 1000转化为十进制数就是8

&运算符的规则为:

  • 对应的二进制位进行比较
  • 相应的二进制位==都为1==,则该位的结果就为1,否则为0

看下图理解与运算规则

🌱例子3:

  • | 运算符----指的是按位或,将两个操作数转换为二进制再进行 | 操作

如图:

image.png

类似的:

  • 10 | 12 = 14 背后的逻辑就是:

  • 10转换为二进制数101012转换为二进制数1100

  • 那么1010 | 1100 就等于 1110

  • 1110转化为十进制数就是14

|运算符的规则为:

  • 对应的二进制位进行比较
  • 相应的二进制位只要有一个为1,则该位的结果就为1,否则为0.

看下图理解或运算规则

🌱例子4:

  • ^运算符----指的是按位异或,将两个操作数转换为二进制再进行 ^ 操作

如图:

image.png

类似的:

  • 10 ^ 12 = 6 背后的逻辑就是:

  • 10转换为二进制数101012转换为二进制数1100

  • 那么1010 ^ 1100 就等于 0110

  • 0110转化为十进制数就是6

^运算符的规则为:

  • 对应的二进制位进行比较
  • 如果相应的二进制位不同,则该位的数字就为1(对应两位相同则为0)

看下图理解异或运算规则

🌱例子5:

  • <<运算符----指的是左移运算符,用于将二进制码向左移动若干位,后面补0

如图:

image.png

其背后逻辑如图所示:

事实上,一个数左移n位,就相当于乘上2n2^n

比如10乘以232^3就等于80,效果如图:

image.png

🌱例子6:

  • >>运算符----指的是右移运算符,用于将二进制码向右移动若干位,前面补0

如图:

image.png

其背后逻辑如图所示:

事实上,一个数右移n位,就相当于除以2n2^n

比如80除以232^3就等于10,效果如图:

image.png

6️⃣小结

好了,最后来看张思维导图吧:

Screenshot 2022-04-07 145510.png

希望这篇文章对你有所帮助!