MySQL 入门大全:运算符

发布于:2025-02-23 ⋅ 阅读:(12) ⋅ 点赞:(0)

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea

在这里插入图片描述


在这里插入图片描述

MySQL 入门大全:运算符

MySQL 中有多种运算符,下面对 MySQL 运算符进行分类

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

下面那我们对各个运算符进行介绍

算术运算符

MySQL 支持的算术运算符包括取余,这类运算符的使用频率比较高

下面是运算符的分类

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

下面简单描述了这些运算符的使用方法

在这里插入图片描述

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

在除法和取余需要注意一点,如果除数是 0 ,将是非法除数,返回结果为 NULL。

比较运算符

熟悉了运算符,下面来聊一聊比较运算符,使用 SELECT 语句进行查询时,MySQL 允许用户对表达式的两侧的操作数进行比较,比较结果为真,返回 1, 比较结果为假,返回 0 ,比较结果不确定返回 NULL。下面是所有的比较运算符

运算符 描述
= 等于
<> 或者是 != 不等于
<=> NULL 安全的等于,也就是 NULL-safe
< 小于
<= 小于等于
> 大于
>= 大于等于
BETWEEN 在指定范围内
IS NULL 是否为 NULL
IS NOT NULL 是否为 NULL
IN 存在于指定集合
LIKE 通配符匹配
REGEXP 或 RLIKE 正则表达式匹配

比较运算符可以用来比较数字、字符串或者表达式。数字作为浮点数进行比较,字符串以不区分大小写的方式进行比较。

  • = 号运算符,用于比较运算符两侧的操作数是否相等,如果相等则返回 1, 如果不相等则返回 0 ,下面是具体的示例,NULL 不能用于比较,会直接返回 NULL

在这里插入图片描述

  • <> 号用于表示不等于,和 = 号相反,示例如下

在这里插入图片描述

  • <=> NULL-safe 的等于运算符,与 = 号最大的区别在于可以比较 NULL 值

在这里插入图片描述

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

在这里插入图片描述

  • 和上面同理,只不过是满足 <= 的时候返回 1 ,否则 > 返回 0。这里我有个疑问,为什么
select 'a' <= 'b';  /* 返回 1 */

/*而*/

select 'a' >= 'b'; /* 返回 0 呢*/
  • 关于 >>= 是同理

  • BETWEEN 运算符的使用格式是 a BETWEEN min AND max ,当 a 大于等于 min 并且小于等于 max 时,返回 1,否则返回 0 。操作数类型不同的时候,会转换成相同的数据类型再进行处理。比如

在这里插入图片描述

  • IS NULLIS NOT NULL 表示的是是否为 NULL,ISNULL 为 true 返回 1,否则返回 0 ;IS NOT NULL 同理

在这里插入图片描述

  • IN 这个比较操作符判断某个值是否在一个集合中,使用方式是 xxx in (value1,value2,value3)

在这里插入图片描述

  • LIKE 运算符的格式是 xxx LIKE %123%,比如如下

在这里插入图片描述

当 like 后面跟的是 123% 的时候, xxx 如果是 123 则返回 1,如果是 123xxx 也返回 1,如果是 12 或者 1 就返回 0 。123 是一个整体。

在这里插入图片描述

  • REGEX 运算符的格式是 s REGEXP str ,匹配时返回值为 1,否则返回 0 。

在这里插入图片描述

后面会详细介绍 regexp 的用法。

逻辑运算符

逻辑运算符指的就是布尔运算符,布尔运算符指返回真和假。MySQL 支持四种逻辑运算符

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

下面分别来介绍一下

  • NOT 或者是 ! 表示的是逻辑非,当操作数为 0(假) ,则返回值为 1,否则值为 0。但是有一点除外,那就是 NOT NULL 的返回值为 NULL

在这里插入图片描述

  • AND&& 表示的是逻辑与的逻辑,当所有操作数为非零值并且不为 NULL 时,结果为 1,但凡是有一个 0 则返回 0,操作数中有一个 null 则返回 null

在这里插入图片描述

  • OR|| 表示的是逻辑或,当两个操作数均为非 NULL 值时,如有任意一个操作数为非零值,则结果为 1,否则结果为 0。

在这里插入图片描述

  • XOR 表示逻辑异或,当任意一个操作数为 NULL 时,返回值为 NULL。对于非 NULL 的操作数,如果两个的逻辑真假值相异,则返回结果 1;否则返回 0。

在这里插入图片描述

位运算符

一听说位运算,就知道是和二进制有关的运算符了,位运算就是将给定的操作数转换为二进制后,对各个操作数的每一位都进行指定的逻辑运算,得到的二进制结果转换为十进制后就说是位运算的结果,下面是所有的位运算。

运算符 作用
& 位与
| 位或
^ 位异或
位取反
>> 位右移
<< 位左移

下面分别来演示一下这些例子

  • 位与 指的就是按位与,把 & 双方转换为二进制再进行 & 操作

在这里插入图片描述

按位与是一个数值减小的操作

  • 位或 指的就是按位或,把 | 双方转换为二进制再进行 | 操作

在这里插入图片描述

位或是一个数值增大的操作

  • 位异或 指的就是对操作数的二进制位做异或操作

在这里插入图片描述

  • 位取反 指的就是对操作数的二进制位做 NOT 操作,这里的操作数只能是一位,下面看一个经典的取反例子:对 1 做位取反,具体如下所示:

在这里插入图片描述

为什么会有这种现象,因为在 MySQL 中,常量数字默认会以 8 个字节来显示,8 个字节就是 64 位,常量 1 的二进制表示 63 个 0,加 1 个 1 , 位取反后就是 63 个 1 加一个 0 , 转换为二进制后就是 18446744073709551614,我们可以使用 select bin() 查看一下

在这里插入图片描述

  • 位右移 是对左操作数向右移动指定位数,例如 50 >> 3,就是对 50 取其二进制然后向右移三位,左边补上 0 ,转换结果如下

在这里插入图片描述

  • 位左移 与位右移相反,是对左操作数向左移动指定位数,例如 20 << 2

在这里插入图片描述