MySQL数据库05:DQL查询运算符

作者:Doro再努力日期:2025/10/22

文章目录

一、运算符简介

二、算术运算符

三、比较运算符

四、逻辑运算符

五、条件查询

五、位运算符(了解)

5.1按位与

5.2按位或

5.3按位异或

5.4按位右移

5.5按位左移

5.6按位取反


一、运算符简介

数据库中的表结构确立后,表中的数据代表的意义就已经确定。通过MSQL运算符进行运算,就可以获取到表结构以外的另一种数据。例如,学生表中存在一个birth字段,这个字段表示学生的出生年份,而运用MySQL的算术运算符用当前的年份减学生出生的年份,那么得到的就是这个学生的实际年龄数据。

MySQL支持4种运算符:

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

二、算术运算符

算术运算符说明
+加法运算
-减法运算
*乘法运算
/或DIV除法运算
%或MOD取余运算,换回余数

对于算术运算符中的加减乘除,如果我们直接进行数字之间的运算,则会直接在终端上打印计算的结果:

1-- 1.算术运算符
2select 6 + 2;
3select 8 - 4;
4select 3 * 2;
5select 8 / 4;
6select 5 % 2;
7

接下来我们将算术运算与表结合起来,表数据仍然使用之前的商品数据:

1-- 将所有商品的价格 + 10
2select pname,price + 10 as new_price from product;
3-- 将所有商品的价格上调10%
4select pname,price * 1.1 as new_price from product;

这里就是from从product这个表中查询pname和price + 10(price * 1.1)这2个数据,因为价格不能叫做价格+10(价格*1.1),因此将修改后的价格进行了重命名为new_price。

三、比较运算符

比较运算符说明
=等于
< 和 <=小于和小于等于
> 和 >=大于和大于等于
<=>安全的等于,两个操作码均为NULL时,其所得值为1;而当一个操作吗为NULL时,其所得值为0
<>或!=不等于
IS NULL 或ISNULL判断一个值是否为NULL
IS NOT NULL判断一个值是否不为NULL
LEAST当有两个或者多个参数时,返回最小值
GREATEST当有两个或者多个参数时,返回最大值
BETWEEN AND判断一个值是否落在两个值之间
IN判断一个值是IN列表中的任意一个值
NOT IN判断一个值不是IN列表中的任意一个值
LIKE通配符匹配
PEGEXP正则表达式匹配

四、逻辑运算符

逻辑运算符说明
NOT 或者 !逻辑非
AND 或者 &&逻辑与
OR 或者 |
XOR逻辑异或

五、条件查询

比价运算符与逻辑运算符通常情况下都是在一起使用的,而运用他俩最多的场景就是条件查询,我们话不多说直接结合表从案例中理解:

1-- 查询商品名称为“海尔洗衣机”的商品所有信息
2(1)select * from product where pname = "海尔洗衣机";

(1)查询商品名称为“海尔洗衣机”的商品所有信息查询我们需要先知道从哪个表查起,我们这里只有一个表,因此使用from product,然后执行查询操作使用select关键字,接着查询哪些字段呢?因为是查询所有信息,所有用 * 代表所有字段,即所有列,然后用where关键字加条件,条件为“海尔洗衣机”属于名称pname字段。

1-- 查询价格为800的商品
2(2)select * from product where price = 800;

(2)查询价格为800的商品,没说查询哪些列,就默认所有列用*代替,接着是从product中查询所有为from product,执行查询操作select,条件where为价格price为800的商品。

1-- 查询价格不为800的所有商品
2(3)select * from product where price != 800;
3   select * from product where price <> 800;
4   select * from product where not (price = 800);

(3)查询不等于800的商品只需要将(2)中的等于改为不等于就行,有3种方式一是使用!=,二是使用<>,这也表示不等于,三是使用not,将等于800的结果取反就行。

1-- 查询价格大于等于60的所有商品
2(4)select * from product where price >= 60;

(4)查询价格大于60的商品只需要将条件改为大于等于60即可。

1-- 查询价格在200到1000之间的商品
2(5)select * from product where price >= 200&&price <= 1000;
3   select * from product where price between 200 and 1000;

(5)查询价格在200到1000之间的商品,只需要将条件修改为200到1000之间,可以使用区间,也可以使用逻辑与。

1-- 查询价格为200或者800的所有商品
2(6)select * from product where price in(200,800);
3   select * from product where price = 200 or price = 800;
4   select * from product where price = 200 || price = 800;

(6)查询价格为200或者800的所有商品只需要修改条件,这里如果可以使用in关键字,in关键字之后更一个列表,只要值包含在in的列表中则表示为真,这里也就是说只要price在200或者800这个列表中,即要么等于200,要么等于800,结果就为真。或者使用逻辑或运算也能达到一样的效果。

1-- 查询含有“裤”字的所有商品
2(7)select * from product where pname like "%裤";

(7)查询含有“裤”字的所有商品,查询的条件是名字,这里需要用到模糊查询,%用来匹配任意字符,这里就表示不管前面是什么,只要以“裤”结尾就查询,如果使用“%裤%”就表示不管前面和后面是什么,只要中间出现了“裤”就查询。

1-- 查询以“海”开头的所有商品
2(8)select * from product where pname like "海%";

(8)查询以“海”开头的所有商品,只需要改变一下模糊查询条件,“海%”表示的是首字符为海,后面的内容不重要。

1-- 查询第二个字为“蔻”的所有商品
29select * from product where pname like "_蔻%";
3

(9)查询第二个字为“蔻”的所有商品,就需要修改模糊查询条件,怎么确定第二个字,这就要用到下划线_,下划线_代表的是单个字符,所以这里"_蔻%"表示第1个字不重要,第2个字为蔻,之后的不重要。

1-- 查询category_id为null的商品
2(10)select * from product where category_id is null;

(10)查询category_id为null的商品,这里就需要将条件改为是null,但是不能直接将category_id等于null,因为我们之前说过null和任意值包括它本身都不相等,所有要用is null。

1-- 查询category_id不为null的商品
2(11)select * from product where category_id is not null;

(11)查询category_id不为null的商品,需要将条件改为is not null,也不能直接!=null。

1-- 使用least求最小值
212select least(10,5,20) as small_number;
3    select least(10,null,20) as small_number;
4    -- 如果求最小值时,有个值为null,则不会进行比较,结果直接为null

(12)使用least求最小值,就向least中传入几个参数,最后返回其中的最小值as存入small_number变量中。如果求最小值时,有个值为null,则不会进行比较,结果直接为null。

1-- 使用greatest求最小值
213select greatest(10,5,20) as big_number;
3     select greatest(10,null,20) as big_number;
4    -- 如果求最大值时,有个值为null,则不会进行比较,结果直接为null

(13)使用greatest求最小值,就向greatest中传入几个参数,最后返回其中的最小值as存入big_number变量中。如果求最大值时,有个值为null,则不会进行比较,结果直接为null。

五、位运算符(了解)

位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。

位运算符说明
|按位或
&按位与
^按位异或
<<按位左移
>>按位右移
~按位取反,反转所以比特位

举例如下:

1select 3&5; -- 按位与
2select 3|5; -- 按位或
3select 3^5; -- 按位异或
4select 3>>1; -- 按位右移
5select 3<<1; -- 按位左移
6select ~3; -- 按位取反

5.1按位与

select 3&5; -- 按位与

3的二进制为:0011

5的二进制为:0101

按位与:从低到高依次比较,二者都为1时结果为1,否则为0

3: 0011

5: 0101

----------

0001

所以3和5按位与的结果为0001,翻译为十进制就是1。

5.2按位或

select 3|5; -- 按位或

3的二进制为:0011

5的二进制为:0101

按位或:从低到高依次比较,二者其中之一为1,则整体结果就为1

3: 0011

5: 0101

----------

0111

所以3和5按位与的结果为0111,翻译为十进制就是7。

5.3按位异或

select 3^5; -- 按位异或

3的二进制为:0011

5的二进制为:0101

按位或:从低到高依次比较,二者相反为1,相同为0

3: 0011

5: 0101

----------

0110

所以3和5按位与的结果为0110,翻译为十进制就是6。

5.4按位右移

select 3>>1; -- 按位右移

3的二进制为:0011

按位或:符号>>的左边是操作对象,右边是移动长度,按位右移就是将左边对象的二进制位整体向右移动几位,头部补0,尾部溢出的位直接舍掉

3: 0011

0001 1

所以3按位右移1位的结果为0001,翻译为十进制就是1。

5.5按位左移

select 3<<1; -- 按位左移

3的二进制为:0011

按位或:符号<<的左边是操作对象,右边是移动长度,按位左移就是将左边对象的二进制位整体向左移动几位,头部溢出的位不用舍掉,尾部补0。

3: 0011

00110

所以3按位左移1位的结果为00110,翻译为十进制就是6。

5.6按位取反

select ~3; -- 按位取反

我们之前不是说3的二进制位为:0011吗,那按位取反不应该是1100等于10吗?这里为什么是这么大的一个数呢?其实这是因为在64位机器上3的二进制是64位格式的:

0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0011

按位取反:

1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1100

这样取反过后就是一个非常大的数字。

关于位运算符我们只需要了解一下就行,知道有这些东西,我们在日常查找中用到的不多。

这次我们了解了查询中运算符的应用,下一节我们将学习排序查询的相关知识,尽情期待!


MySQL数据库05:DQL查询运算符》 是转载文章,点击查看原文


相关推荐


主流的 MCU 开发语言为什么是 C 而不是 C++?
淘晶驰AK2025/10/20

要说主流 MCU 开发为啥是 C 而不是 C++,你先琢磨琢磨 MCU 那点家当 —— 存储空间按 KB 算,RAM 可能就几十 KB,算力更是抠抠搜搜,稍微重点的操作都怕给它干死机。这种环境下,代码的每一个字节、每一次内存访问都得精打细算,而 C 语言天生就带着这种 "极简主义" 的基因。 你想啊,写 MCU 程序,核心就是跟寄存器打交道,直接往地址里塞数,中断服务程序得像闪电一样快,容不得半点拖泥带水。C 语言就像一把朴实的扳手,没有多余的零件,编译器一转就是干干净净的机器码,你写*(vo


jenkins在使用中遇到的问题
tingting01192025/10/19

一、jenkins使用docker命令权限拒绝 将jenkins用户添加到docker组: # usermod -aG docker jenkins # systemctl restart jenkins 二、推送私有仓库提示拒绝 # cp -r /root/.docker ./jenkins # chown -R jenkins.jenkins .docker 三、jenkins 提示kubectl 命令Authentication required # s


美团LongCat-Audio-Codec:给语音大模型装上“顺风耳”与“巧舌”
墨风如雪2025/10/18

各位AI圈的朋友们,又一个重磅消息!美团在2025年10月17日悄然揭开了它在语音AI领域深耕已久的秘密武器——LongCat-Audio-Codec的神秘面纱。这可不是一个普通的编解码器,它旨在为语音大模型(Speech LLM)打造一套全新的“听”与“说”的链路。想象一下,我们离那个能真正流畅、自然、高效对话的AI,又近了一大步! 语音AI的“死结”与LongCat的破解之道 你可能想不到,现在我们与智能设备的那些看似流畅的语音交互背后,其实隐藏着不少“死结”。语音大模型在理解语义、生成逼


AI 在数据库操作中的各类应用场景、方案与实践指南
木易 士心2025/10/16

文章目录 概述1. 数据库探索与结构分析场景说明AI 驱动的数据库探索方案 2. 智能报表生成场景说明AI 自动生成的销售分析报表 3. CRUD 操作优化场景说明AI 优化的智能 CRUD 模板 4. 查询性能优化场景说明AI 驱动的查询优化流程优化前(慢查询)AI 优化建议优化后查询 AI 推荐的索引策略 5. 复杂问题处理方案方案 1:递归查询处理层级数据方案 2:数据质量自动化检查 6. AI 辅助的数据库维护场景说明 7.


C++设计模式之行为型模式:模板方法模式(Template Method)
bkspiderx2025/10/15

模板方法模式(Template Method)是行为型设计模式的一种,它定义了一个算法的骨架,将算法的一些步骤延迟到子类中实现。这种模式允许子类在不改变算法结构的情况下,重新定义算法中的某些步骤,从而实现算法的复用与定制。 一、核心思想与角色 模板方法模式的核心是“固定流程,可变步骤”,通过在父类中定义算法的框架,将可变部分委托给子类实现。其核心角色如下: 角色名称核心职责抽象类(AbstractClass)定义算法的骨架(模板方法),包含多个抽象方法(子类必须实现的步骤)和可选的钩子方法(子


苦练Python第64天:从零掌握多线程,threading模块全面指南
倔强青铜三 VIP.1 初学乍练2025/10/14

前言 大家好,我是倔强青铜三。欢迎关注我,微信公众号:倔强青铜三。点赞、收藏、关注,一键三连! 欢迎继续 苦练Python第64天。 今天咱们把“并发”这把瑞士军刀——threading 模块,从开箱到实战一次性讲透。全程只用 Python 自带标准库,代码复制即可运行! 一、为什么需要线程? I/O 密集场景:爬虫、文件下载、日志采集,CPU 在等网络/磁盘,闲着也是闲着。 共享内存:比多进程轻量,数据不用序列化来回拷贝。 GIL?别慌:I/O 密集时线程照样提速;CPU 密集请转投 mu


局域网IP地址冲突排查与解决全指南:从诊断到预防
Bruce_xiaowei2025/10/12

局域网IP地址冲突排查与解决全指南:从诊断到预防 在局域网管理和维护中,IP地址冲突是一个常见但令人头疼的问题。当两台或多台设备被分配了相同的IP地址时,网络连接就会变得不稳定甚至中断。本文将详细介绍如何快速定位、解决并预防IP地址冲突问题。 IP地址冲突的识别与现象 典型症状表现: 设备网络连接时断时续频繁出现"网络电缆被拔出"提示Ping测试出现"一般故障"或"请求超时"特定网络服务无法访问 冲突根源分析: 手动配置IP地址时出现重复分配DHCP服务器范围设置不当网络中存在未经授权的DHCP


领码方案|微服务与SOA的世纪对话(5):未来已来——AI 驱动下的智能架构哲学
领码科技2025/10/11

📌 摘要 AI 已从工具升级为架构的“新大脑”,成为边界、治理、交付与演进的核心驱动力。本文按「方法论新生」模板,聚焦 AI 驱动下的智能架构哲学: 用智能双生体强化领域与基础设施模型用AI 增强 DDD 与契约,让边界自动进化用自驱动 Service Mesh,实现策略的智能演化用预测型 CI/CD,让发布成为预判与优化的闭环构建自演进反馈体系,让系统具备持续自优化能力 结合未来架构趋势与实践路径,给出端到端流程与行动清单,帮助组织完成从“自动化”到“智能化”的跃迁。 关键词:智能双


【LeetCode - 每日1题】水位上升的泳池中游泳问题
(时光煮雨)2025/10/9

🌈 个人主页:(时光煮雨) 🔥 高质量专栏:vulnhub靶机渗透测试 👈 希望得到您的订阅和支持~ 💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~) 🌵目录🌵 难度 ⭐⭐⭐⭐⭐ 题目回顾 ✅解题思路分析 💖 概述 💓 核心思路 ✅ 代码分析 ✅ 复杂度分析 ✅ 测试用例验证 ✅


Flex 布局下文字省略不生效?原因其实很简单
序猿杂谈2025/10/8

概述 在开发中,我们常遇到这种布局:A、B、C 三段文本长度不固定,其中 A、C 占用空间较少,需要完整显示;而 B 是自适应区域,超出部分需省略显示。A 与 B 共享同一容器,右侧的 “Live” 按钮与该容器同级,容器应占据除 “Live” 之外的所有剩余空间。 HTML 结构如下: <div class="wrap"> <div class="infos"> <div>Soccer</div> <div class="self">Campeonato De Reser

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0