一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
1️⃣前言
- 数据库中的表结构一旦建立后,表中的数据就有了意义
- 通过MySQL运算符进行运算,我们可以获得表结构以外的另一种数据
而在MySQL中,运算符有四种:
- 算术运算符
- 比较运算符
- 逻辑运算符
- 位运算符
下面,我们就来看看各种运算符的特点!
2️⃣算术运算符
✔️表格
下面表格列举了所有算术运算符:
| 符号 | 含义 |
|---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/或DIV | 除法 |
%或MOD | 取余 |
✨备注:
+用于获得一个或多个值的和-用于一个值减去另一个值*用于得到两个或多个值的乘积/用一个值除以另一个值得到商%用于一个值除以另一个值得到余数
💡举例
- 需要注意的是,当除数为0时 ,将视为非法除数,其返回值为 NULL。
如图:
3️⃣比较运算符
✔️表格
下面表格列举了所有比较运算符:
| 符号 | 含义 |
|---|---|
= | 等于 |
<=> | 安全等于 |
<> 或 != | 不等于 |
< | 小于 |
<= | 小于等于 |
> | 大于 |
>= | 大于等于 |
IS NULL | 是否为NULL |
IS NOT NULL | 是否不为NULL |
BETWEEN AND | 区间,在两值之间 |
IN | 判断值是否在列表中 |
NOT IN | 判断值是否不在列表中 |
LIKE | 通配符匹配 |
REGEXP | 正则表达式匹配 |
✨备注:
MySQL允许用户对表达式的两侧的操作数进行比较- 如果比较的结果为真,则返回
1- 结果为假则返回
0- 如果比较结果不确定,则返回
NULLNULL不能用于比较,会直接返回NULL
💡举例
🌱例子1:
=号运算符----用于判断运算符两侧的操作数是否相等
🌱例子2:
<=>运算符----和=运算符类似,不同在于<=>运算符可以比较 NULL 值
🌱例子3:
<>运算符或!运算符----是否不相等
🌱例子4:
<运算符----当左侧操作数小于右侧操作数时,返回值为 1, 否则返回 0。
类似的,<=,>,>=等运算符的用法也是这样
🌱例子5:
IS NULL 和 IS NOT NULL 分别表示是否为 NULL,是否不为NULL
- 如果为NULL,则返回1,否则返回0
🌱例子6:
BETWEEN AND的语法是:
select a between l and r ;
这就相当于判断a是否在区间[l , r],是就返回1,否则返回0.
🌱例子7:
IN 符号----用于判断某值是否在一个列表中
- 语法为:
value in (value1,value2,value3);
NOT IN 的用法上述IN的用法类似。
🌱例子8:
LIKE符号----用于模糊匹配,其语法大致为:xxx like 'xx%'
- 如果相似,就返回1,否则返回0
🌱例子9:
REGEXP符号----用于正则表达式匹配,语法为:str1 regexp str2;
- 如果匹配则返回1,否则返回0
4️⃣逻辑运算符
- 逻辑运算符指的就是布尔运算符,判断真或假
✔️表格
下面表格列举了所有逻辑运算符:
| 符号 | 含义 |
|---|---|
! 或 NOT | 逻辑非(真变假,假变真) |
&& 或 AND | 逻辑与(所有条件满足时才为真) |
|| 或OR | 逻辑或(有一个条件为真就是真) |
XOR | 逻辑异或(不同为真,相同为假) |
✨备注:
需要注意的是:
NOT NULL的返回值为NULL
💡举例
🌱例子1:
NOT和!表示逻辑非
当操作数为 0(假) ,则返回 1,否则返回 0。
🌱例子2:
AND和&&表示逻辑与
当所有操作数不为0并且不为 NULL 时,则返回1
反之,只要有一个操作数为0 ,就返回 0
如果操作数没有0,但有一个操作数为null,就返回 null。
🌱例子3:
OR和||表示逻辑或
如果操作数都不为NULL,此时只要有一个非零值,就返回1
如果操作数全是0,就返回0
1 or null 的返回值是1
0 or null 的返回值是null
null or null 的返回值是null
🌱例子4:
XOR表示逻辑异或
只要有一个操作数为 NULL 时,返回 NULL。
当所有操作数都不为NULL时
如果两个操作数的逻辑值不同,就返回1,否则返回0
5️⃣位运算符
一说到位运算符,,就肯定和二进制有关。
位运算就是将给定的操作数转换为二进制后,对各个操作数的每一位都进行指定的逻辑运算
再将得到的二进制结果给转换为十进制,这就是位运算的结果。
✔️表格
下面表格列举了所有位运算符:
| 符号 | 含义 |
|---|---|
~ | 按位取反 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
<< | 按位左移 |
>> | 按位右移 |
💡举例
🌱例子1:
-
~符号----指的是按位取反,注意,这里是一个操作数。 -
按位取反,就是将值转换为二进制数,再做
NOT操作。
来看一个有趣的例子:
为什么会这样?
- 事实上,MySQL的数值,默认是以8个字节显示的,即64位。
那么数值1就是:
而取反的效果就是:1变为0,0变为1.
显然,1取反后的结果就是63个1加上一个0
如图:
此时再转换为十进制数就是18446744073709551614
如图:
🌱例子2:
&符号----指的是按位与,将两个操作数转换为二进制再进行&操作
如图:
为什么10 & 12 = 8?
10 & 12 = 8的意思是:将
10转换为二进制数1010,12转换为二进制数1100那么
1010 & 1100就等于1000而
1000转化为十进制数就是8
&运算符的规则为:
- 对应的二进制位进行比较
- 相应的二进制位==都为1==,则该位的结果就为1,否则为0
看下图理解与运算规则:
🌱例子3:
|运算符----指的是按位或,将两个操作数转换为二进制再进行|操作
如图:
类似的:
10 | 12 = 14背后的逻辑就是:
10转换为二进制数1010,12转换为二进制数1100那么
1010 | 1100就等于1110而
1110转化为十进制数就是14
|运算符的规则为:
- 对应的二进制位进行比较
- 相应的二进制位只要有一个为1,则该位的结果就为1,否则为0.
看下图理解或运算规则:
🌱例子4:
^运算符----指的是按位异或,将两个操作数转换为二进制再进行^操作
如图:
类似的:
10 ^ 12 = 6背后的逻辑就是:
10转换为二进制数1010,12转换为二进制数1100那么
1010 ^ 1100就等于0110而
0110转化为十进制数就是6
^运算符的规则为:
- 对应的二进制位进行比较
- 如果相应的二进制位不同,则该位的数字就为1(对应两位相同则为0)
看下图理解异或运算规则:
🌱例子5:
<<运算符----指的是左移运算符,用于将二进制码向左移动若干位,后面补0
如图:
其背后逻辑如图所示:
事实上,一个数左移
n位,就相当于乘上
比如10乘以就等于80,效果如图:
🌱例子6:
>>运算符----指的是右移运算符,用于将二进制码向右移动若干位,前面补0
如图:
其背后逻辑如图所示:
事实上,一个数右移
n位,就相当于除以
比如80除以就等于10,效果如图:
6️⃣小结
好了,最后来看张思维导图吧:
希望这篇文章对你有所帮助!