精选专栏链接 🔗


  • MySQL技术笔记专栏
  • Redis技术笔记专栏
  • 大模型搭建专栏
  • Python学习笔记专栏
  • 深度学习算法专栏

欢迎订阅,点赞+关注,每日精进1%,共攀技术高峰

更多内容持续更新中!希望能给大家带来帮助~ 😀😀😀


MySQL中的常见运算符

  • 1,MySQL中的DUAL关键字
  • 2,算术运算符
  • 3,比较运算符
    • 3.1,符号型运算符
      • 3.1.1,等号运算符
      • 3.1.2,安全等于运算符
      • 3.1.3,不等于运算符
      • 3.1.4,其他符号型运算符总结
    • 3.2,非符号型运算符
      • 3.2.1,IS NULL :为空运算符
      • 3.2.1,IS NOT NULL: 不为空运算符
      • 3.2.3,LEAST:最小值运算符
      • 3.2.4,GREATEST:最大值运算符
      • 3.2.5,BETWEEN AND运算符
      • 3.2.6,IN 和NOT IN运算符
      • 3.2.7,LIKE:模糊查询运算符
      • 3.2.8,ESCAPE 运算符
  • 4,逻辑运算符


1,MySQL中的DUAL关键字

‌ DUAL 关键字‌是 MySQL数据库 中的一个特殊表,主要用于在不需要从具体表中获取数据时进行查询操作。DUAL表是一个虚拟表,以运行如下SQL代码为例:

SELECT 1,3*2
FROM DUAL;

代码运行结果如下:

在这里插入图片描述


2,算术运算符

算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行运算。

MySQL中常见的算术运算符有:加(+)、减(-)、乘(*)、除(/或DIV)和取模(%或MOD)。接下来以SQL代码为例理解算术运算符:

①加法与减法运算符

SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5 
FROM DUAL;

运行结果如下:

在这里插入图片描述

②乘法与除法运算符

 SELECT 100, 100 * 1, 100 * 1.0, 100 / 1.0, 100 / 2,100 + 2 * 5 / 2,100 /3, 100 DIV 0 
FROM DUAL;

运行结果如下:

在这里插入图片描述
注意点:

  • 有浮点数参与运算,则结果为浮点数;如(100 * 1.0结果为100.0);
  • 整数相除结果为浮点数。 因为大多数情况下的整数相除结果不能除尽,因此MySQL中默认了是除不尽的情况,即使除尽了也是浮点数;
  • 分母为0则结果为Null;

③取模(求余)运算符

 SELECT 12 % 3, 12 MOD 5, 12 MOD -5, -12 % 5,-12 % -5FROM dual;

运行结果如下:

在这里插入图片描述

注意:取余运算结果的正负与被模数一致(即%前面的数值)

练习:从员工表中查询员工id为偶数的员工信息

SQL代码如下:

 SELECT employee_id,last_name,salaryFROM employeesWHERE employee_id % 2 = 0;

查询得到的结果集如下:

在这里插入图片描述


3,比较运算符

比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。比较运算符可以分为符号类型和非符号类型。


3.1,符号型运算符

3.1.1,等号运算符

运行如下SQL代码:

SELECT 1 = 2,1 != 2,1 = '1',1 = 'a',0 = 'a' 
FROM DUAL;

运行结果如下:

在这里插入图片描述
运行如下SQL代码:

SELECT 'a' = 'a','ab' = 'ab','a' = 'b' 
FROM DUAL;

运行结果如下:

在这里插入图片描述

注意点:

  • 如果等号两边的值一个是整数,一个是字符串,则MySQL会按照字符串进行比较。如:1 = ‘1’ 进行比较时,会将字符串转换为数值1 ;
  • 字符串存在隐式转换。如果转换数值不成功,则看做0;比如1=‘a’ ,字符串转数值失败,会变为0;
  • 如果等号两边都是字符串,MySQL会按照字符串进行比较,比较各自字符的ASCII编码;
  • 如果等号两边的值、字符串或表达式中有一个为NULL,则比较结果为NULL。

易错例子:筛选出employees表内commission_pct为Null的员工信息

SQL语句如果写成:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct = NULL;

此时执行查询,没有任何结果,如下图所示:

在这里插入图片描述
原因就是WHERE语句中有Null参与比较,而只要等号两边有一个Null,结果就是Null。可以使用接下来介绍的安全等于运算符解决此问题。


3.1.2,安全等于运算符

安全等于运算符**(<=>)与等于运算符(=)的作用是相似的,唯一的区别是‘<=>’可以用来对NULL进行判断。在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL。

SQL代码示例如下:

SELECT 1 <=> '1', 1 <=> 0, 'a' <=> 'a', (5 + 3) <=> (2 + 6), '' <=> NULL,NULL <=> NULL 
FROM DUAL;

运行结果如下:

在这里插入图片描述

回顾例子:筛选出employees表内commission_pct为Null的员工信息

对此例子,可以使用安全等于(<=>)进行查询:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct <=> NULL;  

运行结果如下:
在这里插入图片描述


3.1.3,不等于运算符

不等于运算符( <> 和 != )用于判断两边的数字、字符串或者表达式的值是否不相等,如果不相等则返回1,相等则返回0。不等于运算符不能判断NULL值。如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL。

SQL示例如下:

 SELECT 1 <> 1, 1 != 2, 'a' != 'b', (3+4) <> (2+6), 'a' != NULL, NULL <> NULLFROM DUAL; 

运行结果如下:

在这里插入图片描述

3.1.4,其他符号型运算符总结

运算符名称作用示例
<小于运算符判断前面的值、字符串或表达式是否小于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A < B
>大于运算符判断前面的值、字符串或表达式是否大于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A > B
<=小于等于运算符判断前面的值、字符串或表达式是否小于等于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A <= B
>=大于等于运算符判断前面的值、字符串或表达式是否大于等于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A >= B

3.2,非符号型运算符

3.2.1,IS NULL :为空运算符

回顾例子:筛选出employees表内commission_pct为Null的员工信息

前面介绍了使用安全等于运算符筛选 Null 字段。我们还可以使用IS NULL运算符进行筛选:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NULL;  

在这里插入图片描述


3.2.1,IS NOT NULL: 不为空运算符

继续看例子:筛选出employees表内commission_pct不为Null的员工信息

SQL语句如下:

SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;  

运行结果如下:

在这里插入图片描述

总结:查询commission_pct等于NULL。可以有以下四种写法:

SELECT employee_id,commission_pct FROM employees WHERE commission_pct IS NULL;
SELECT employee_id,commission_pct FROM employees WHERE commission_pct <=> NULL;
SELECT employee_id,commission_pct FROM employees WHERE ISNULL(commission_pct);
SELECT employee_id,commission_pct FROM employees WHERE commission_pct = NULL;

3.2.3,LEAST:最小值运算符

LEAST最小值运算符,用于在多个值中返回最小值。

SQL示例如下:

 SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2)FROM DUAL;

运行结果如下:
在这里插入图片描述
通过结果可以看出:

  • 当参数是整数或者浮点数时,LEAST将返回其中最小的值;
  • 当参数为字符串时,LEAST返回字母表中顺序最靠前的字符;
  • 当比较值列表中有NULL时,LEAST不能判断大小,返回值为NULL;

3.2.4,GREATEST:最大值运算符

GREATEST最大值运算符,用于在多个值中返回最小值。

SQL示例如下:

SELECT GREATEST(1,0,2), GREATEST('b','a','c'), GREATEST(1,NULL,2)
FROM DUAL;

运行结果如下:

在这里插入图片描述
通过结果可以看出:

  • 当参数中是整数或者浮点数时,GREATEST将返回其中最大的值;
  • 当参数为字符串时,GREATEST返回字母表中顺序最靠后的字符;
  • 当比较值列表中有NULL时,GREATEST不能判断大小,返回值为NULL;

3.2.5,BETWEEN AND运算符

BETWEEN AND运算符使用的格式通常为:SELECT D FROM TABLE WHERE C BETWEEN A AND B,此时,当C大于或等于A,并且C小于或等于B时,结果为1,否则结果为0。

SQL示例如下:

SELECT 1 BETWEEN 0 AND 1, 10 BETWEEN 11 AND 12, 'b' BETWEEN 'a' AND 'c'
FROM DUAL;

运行结果如下:

在这里插入图片描述

应用示例:查询employees表内工资在6000到8000的员工信息;

SQL语句如下:

SELECT employee_id,last_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000;

查询得到的结果集如下:

在这里插入图片描述

需要注意的是:SELECT D FROM TABLE WHERE C BETWEEN A AND B;,其中A为下边界,C为上边界,不可颠倒,否则可能查询不到数据。

如果需求改变,要求查询employees表内工资不在6000到8000的员工信息呢?

SQL语句如下:

SELECT employee_id,last_name,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;

查询得到的结果集如下:

在这里插入图片描述


3.2.6,IN 和NOT IN运算符

IN运算符用于**判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。

应用示例:查询部门为10、20、30部门的员工信息

SQL示例如下:

SELECT last_name,salary,department_id
FROM employees
WHERE department_id IN (10,20,30);

或者采用下面这种方案:

SELECT last_name,salary,department_id
FROM employees
where department_id = 10 or department_id = 20 or department_id = 30;

运行结果如下:

在这里插入图片描述


NOT IN运算符用于判断给定的值是否不是IN列表中的一个值,如果不是IN列表中的一
个值,则返回1,否则返回0。

应用示例:查询工资不是6000、7000、8000的员工信息

SQL示例如下:

SELECT last_name,salary,department_id
FROM employees
WHERE salary NOT IN (6000,7000,8000);

运行结果如下:

在这里插入图片描述


3.2.7,LIKE:模糊查询运算符

LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果满足条件则返回1,否则返回
0。如果给定的值或者匹配条件为NULL,则返回结果为NULL。

应用示例:查询last_name中包含字符 ‘a’ 的员工信息

SQL示例如下:

SELECT last_name
FROM employees
WHERE last_name LIKE '%a%';

运行结果如下:

在这里插入图片描述

其中 %a% 中的 “%”是通配符,它代表不确定个数的字符。另外“_” 也是常用的通配符,二者区别如下:

  • “%”:匹配0个或多个字符。
  • “_”:只能匹配一个字符。

以下面的几个案例进行说明:

  • “%a%” 表示查询 last_name 中包含字符a的员工信息;
  • “a%” 表示查询last_name中以字符a开头的员工信息;
  • “%a” 表示查询last_name中以字符a结尾的员工信息;
  • “_a%” 表示查询last_name中第二个字符为a的员工信息;(一个下划线匹配一个字符)
  • “_\_a%” 表示查询第二个字符为下划线,且第三个字符为a的 员工信息;(其中 “\” 表示转义)

3.2.8,ESCAPE 运算符

如果使用\表示转义,要省略ESCAPE。如果不想使用\表示转义,则要加上ESCAPE。

SQL示例(\表示转义):

SELECT last_name
FROM employees
WHERE last_name LIKE '_\_a%';

不想使用\进行转义,比如要求使用$进行转义。则可以修改SQL为:

SELECT last_name
FROM employees
WHERE last_name LIKE '_$_a%' ESCAPE '$';

4,逻辑运算符

逻辑运算符主要用来判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL。MySQL中支持的四种逻辑运算符分别是:逻辑与、逻辑或、逻辑非、逻辑异或。

运算符作用作用
NOT 或 !逻辑非SELECT NOT A
AND 或 &&逻辑与SELECT A AND B 或 SELECT && B
OR 或II逻辑或SELECT A OR B 或 SELECT A | | B
XOR逻辑异或SELECT A XOR B

其中逻辑异或(XOR)运算符是当给定的值中任意一个值为NULL时,则返回NULL;如果
两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1。简而言之,异或强调 “异” ,只有两边不同时,才返回1。

异或运算符SQL示例

SELECT 1 XOR -1, 1 XOR 0, 0 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1, 0 XOR 0 XOR 0;

运行结果如下:

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85585.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85585.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/85585.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级IO技术详解:阻塞/非阻塞IO、多路复用与内存映射

高级IO技术详解&#xff1a;阻塞/非阻塞IO、多路复用与内存映射 关键词&#xff1a;阻塞IO 非阻塞IO select/poll/epoll mmap 一、阻塞IO vs 非阻塞IO 类型行为特点设置方式阻塞IO- 读空管道阻塞- 写满管道阻塞默认模式非阻塞IO- 读空文件返回 -1&#xff0c;errnoEAGAIN- 写满…

【无标题】拓扑对偶框架的严格性补完与哲学突破

拓扑对偶框架的严格性补完与哲学突破&#xff1a; 一、数学严格性补完&#xff1a;同调类守恒的解决方案 1.1 负系数问题的几何化修正 **问题本质**&#xff1a;当 $a_i$ 含负数时&#xff0c;曲率分配 $\kappa\frac{2\pi a_i}{A_{\text{max}}}$ 导致伪黎曼流形 **解决方案…

从0开始学习R语言--Day25--A/B测试 vs 多臂老虎机

通常在比较两个不同的方案对数据的影响时&#xff0c;我们会各拿50%的数据去进行对照试验&#xff0c;这样观测到的结果会最大程度地保留统计学上的特点。但实际上&#xff0c;并不是所有对比不同方案都要这样做&#xff0c;一来&#xff0c;我们需要等到两组实验都完全结束后&…

功耗高?加密弱?爱普特APT32F1023H8S6单片机 2μA待机+AES硬件加密破局

爱普特APT32F1023H8S6单片机深度解析 1. 产品定位 APT32F1023H8S6 是爱普特半导体&#xff08;APT&#xff09;推出的 32位高性能单片机&#xff0c;基于 ARM Cortex-M0内核&#xff0c;主打 高集成度、低功耗、高性价比&#xff0c;面向消费电子、工业控制和物联网领域。 2. …

【MFC】绘制自定义控件-显示图片(支持放大操作)

目录 一、CDC类&#xff08;二级缓存&#xff09;二、计算视口三、放大操作代码中初始化操作&#xff08;方便以后cv&#xff09; 一、CDC类&#xff08;二级缓存&#xff09; CDC类是设备上下文的核心类&#xff0c;它的作用是抽象化对图形输出设备&#xff08;像屏幕、打印机…

在Proteus新工程中放置基本元器件

视频教程&#xff1a; [最详细]Proteus新建第一个工程与快捷键设置 操作步骤 1选择这个黄色的三角&#xff0c;然后点击旁边的P,开始找元件。 2点开P后&#xff0c;呈现如下图界面&#xff0c;我们在Keyword栏中&#xff0c;输入stm32&#xff0c;然后他会自动出现对应的元件&…

PRUD币推动健康数据资产化,开启Web3隐私金融新时代

在全球健康科技与数据主权浪潮下&#xff0c;PRUD币&#xff08;Prudential Utility & Data Token&#xff09;正成为Web3健康金融领域中的重要通证。项目通过链上身份绑定、健康行为证明、隐私计算与NFT机制&#xff0c;为用户打造了“健康数据资产化”的创新路径&#xf…

Mac 安装 finalshell

1.下载 地址&#xff1a;FinalShell官网 第一个进入选择对应的 mac 版本下载。 下一步下一步完成安装。 2.链接虚拟机&#xff0c;点击图示文件夹 点击新建链接&#xff0c;新建 SSH 链接 3.去 vmware 中查询 Linux 系统的 IP,使用 ip addr 命令或者 ifconfig 命令皆可。 ip…

Javaweb - 2 HTML

目录 HTML 入门 1. HTML & CSS & JavaScript 的作用 2. 什么是 HTML 3. 什么是超文本 4. 什么是标记语言 5. HTML 基本结构 6. HTML 概念词汇解释 7. HTML 的一些语法规则 8. 开发工具 VsCode 安装插件&#xff1a; 常见设置&#xff1a; HTML 常见标签 …

CWGAN-GP 增强型 CAE 在非 IID 数据集中用于 5G-NR 干扰检测

抽象 在不断扩大的 5G-NR 无线蜂窝网络领域中&#xff0c;无线干扰攻击作为安全攻击普遍存在&#xff0c;损害了接收信号的质量。我们通过将加性高斯白噪声 &#xff08;AWGN&#xff09; 合并到真实世界的同相和正交 &#xff08;I/Q&#xff09; OFDM 数据集中来模拟干扰环境…

JavaEE-Spring-Web-Mvc

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc)&#xff0c;但它通常被称为"Spring MVC". Servlet 是⼀种实现动态⻚⾯的技术. 准确来讲Serv…

Linux从入门到入门

系统教程学习类 Ubuntu 从入门到精通 系统页面/基本操作类 Ubuntu20.04终端固定终端到左边的导航栏_ubuntu20.04设置菜单固定-CSDN博客Ubuntu 20.04 系统5分钟后老是自动锁屏_修改锁屏时间-CSDN博客 命令类 拷贝&#xff1a;将 下载 文件夹里的.sh文件 复制到opt目录下 sudo cp…

AI自动生成Git提交信息-git AI Commit

在现代软件开发中&#xff0c;编写清晰且一致的Git提交信息对于维护项目历史和促进团队协作至关重要。然而&#xff0c;为每次变更手动撰写描述性提交信息可能耗时&#xff0c;尤其是处理复杂差异或大型项目时。AI Commit 是一个利用AI分析Git差异并生成符合Conventional Commi…

【三大前端语言之一】样式:CSS详解

【三大前端语言之一】样式&#xff1a;CSS详解 在了解完HTML的有关知识后&#xff0c;我们应该知道&#xff0c;一个网页光有框架还不行&#xff0c;必须还得有装饰它的样式。就好比房子的结构搭好了&#xff0c;但如果没有油漆、没有窗帘、没有家具&#xff0c;就无法真正展现…

Spring AI 聊天记忆功能实战(一):从接口设计到生产实践

Spring AI 聊天记忆功能实战&#xff08;一&#xff09;&#xff1a;从接口设计到生产实践 在构建AI对话应用时&#xff0c;聊天记忆管理及存储是实现连贯上下文交互的关键组件。而大模型&#xff08;LLM&#xff09;本质上是无状态的&#xff0c;这意味着它们不会保留历史交互…

Element Plus 对话框 el-dialog 和 抽屉 el-drawer 的使用注意项(使用 div 包裹)

总结&#xff1a;使用 div 包裹&#xff01;&#xff01;&#xff01; 详细说明&#xff1a; 对话框 el-dialog 或 抽屉 el-drawer 样式的设置说明&#xff1a; 要想有效设置 el-dialog 或 el-drawer 的样式&#xff0c;需确保 el-dialog 或 el-drawer 的上层不是template&am…

【python】简单演示 gateway、service、client的工作原理

gateway 看起来主要是做协议转换的A gateway is a network node that acts as an entrance and exit point, connecting two networks that use different protocols. It allows data to flow between these networks, essentially acting as a translator between different c…

数据仓库面试题合集⑥

实时指标体系设计 + Flink 优化实战:面试高频问题 + 项目答题模板 面试中不仅会问“你做过实时处理吗?”,更会追问:“实时指标体系是怎么搭建的?”、“你们的 Flink 稳定性怎么保证?” 本篇聚焦实时指标体系设计与 Flink 优化场景,帮你答出架构设计力,也答出调优实战感…

Vue + AbortController 请求取消弹窗 hook 封装

背景 实际业务开发场景中&#xff0c;往往存在有些大数据请求的需求&#xff0c;一旦请求发起加载遮罩后用户就无法操作了&#xff0c;直接尬住&#xff0c;所以提供一个支持取消查询的功能还是很有必要的&#xff0c;为了在全业务接口都能使用封装一个hook。 ✋为什么要用 A…

数据结构相关

1 问题 如何辨析数据对象和数据结构&#xff1f;如何设计多种储存结构以及他们特性有什么&#xff1f;内存条和硬盘的区别&#xff1f; 2 方法 明晰俩者的定义数据对象是性质相同的有限个数据元素的集合&#xff0c;他是数据的一个子集。数据结构是指所涉及的数据元素的集合以及…