MySQL的where表达式中的各种运算符的用法和细节

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL的where表达式中的各种运算符的用法和细节

MySQL的where表达式中的各种运算符的用法和细节

今天在研究mysql的where表达式中的运算符的时候,遇到一个有意思的问题。

问题是:以id为主键,选择id在5到10之间的数据

小华说:where id>5 and id <10;就搞定了

小朋说:where id between 5 and 10;就搞定了

翻译起来,好像两句话的意思是一样的,其实这里是有一个细节的。

小华的说法,最终选择的是6,7,8,9

小朋的说法,最终选择的是5,6,7,8,9,10

看似是差不多的描述,实际是结果是不一样的。因为between and运算符虽然和> ,>=, <,<= ,!=等运算符是同一层次,但是范围是不同的。between and 实际是取目标范围的闭区间。

如果将小华的说法改成:where id>=5 and id <=10,那就和小朋的回答一致了。

所以为避免日后混淆,今日将mysql运算符研究了一遍,进行一个较全面的总结。

mysql运算符分类

掌握mysql的运算符对于编写SQL语句是非常重要的,可以使我们高效写语句,不犯错。

大体上mysql可以分为以下几种运算符算术运算符

用于在select语句中对数值进行算术操作,包括加(+)、减(-)、乘(*)、除(/)和取模(%)。


比较运算符

用于比较两个表达式的值,返回的结果是真或假。常用的比较运算符包括等于(=)、不等于(<>或!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。


逻辑运算符

主要有三种——AND、OR和NOT。它们用于判断两个布尔表达式之间的关系,并且返回TRUE或FALSE。


位运算符

将数字转换为二进制后,在位级别上进行操作。主要有按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移位(<<)和右移位(>>)。


赋值运算符

用于将一个值赋给一个变量,主要有等于号(=)和加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)和取模等于(%=)等复合赋值运算符。


其他运算符

REGEXP(用于正则表达式匹配)和BETWEEN…AND(用于查找指定范围内的数据)。


where表达式中的运算符

=:判断两个值是否相等。

<>或!=:判断两个值是否不相等。

<:判断左边的值是否小于右边的值。

>:判断左边的值是否大于右边的值。

<=:判断左边的值是否小于等于右边的值。

>=:判断左边的值是否大于等于右边的值。

BETWEEN:判断某个值是否在某个范围内。

IN:判断某个值是否在一个列表中。

LIKE:模糊匹配,判断某个值是否包含某个模式。

IS NULL:判断某个值是否为空。

NOT:否定运算符,取反WHERE表达式中的条件。

除了这些常见的运算符,MySQL还支持一些其他的运算符,如逻辑运算符(AND、OR、NOT)和位运算符(&、|、^、~、<<、>>)。
等于运算符的注意点:使用等于运算符时,如果比较的值是NULL,那么结果总是未知的(NULL)。


不等于运算符的注意点:使用不等于运算符时,如果比较的值是NULL,那么结果总是未知的(NULL)。


小于和大于运算符的注意点:使用小于和大于运算符时,如果比较的值是NULL,那么结果总是未知的(NULL)。


BETWEEN运算符的注意点:使用BETWEEN运算符时,如果比较的值是NULL,那么结果总是未知的(NULL)。


IN运算符的注意点:使用IN运算符时,如果比较的值是NULL,那么结果总是未知的(NULL)。


LIKE运算符的注意点:使用LIKE运算符时,可以使用通配符,例如%或_,但是使用通配符会影响查询的性能。


NOT运算符的注意点:使用NOT运算符时,会将结果反转,例如NOT TRUE的结果是FALSE,NOT FALSE的结果是TRUE。


AND和OR运算符的注意点:使用AND和OR运算符时,需要注意它们的优先级,可以使用括号来明确优先级。


IS NULL和IS NOT NULL运算符的注意点:使用IS NULL和IS NOT NULL运算符时,需要注意NULL的特殊性,NULL不等于任何值,包括NULL本身。


between and 和 and运算符的区别

这个在文章最开头已经说过了,但重要的事,有必要再强调一遍。

BETWEEN AND和AND是MySQL的where表达式中的两个不同的运算符,它们的作用和使用方式也不同。


BETWEEN AND运算符用于指定一个范围,在这个范围内的值都会被选中。它的语法如下:

AND运算符则是逻辑运算符之一,用于连接多个条件,只有当所有条件都为真时,整个条件才为真。它的语法如下:

in运算符需要注意的点
==注意看这两张图的区别,in运算符是没有模糊查询功能的。它仅能用来查询指定项。

★★★★★比如我在整个列表中查看有没有叫‘张三’的人,而不能查看名字里有没有带‘三’的人==

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
12天前
|
SQL 关系型数据库 MySQL
MySQL:CTE 通用表达式
CTE(通用表表达式)为处理复杂查询提供了强大的工具。通过普通CTE,可以简化查询逻辑,提高可读性;通过递归CTE,可以优雅地处理层级结构数据。掌握CTE的使用,对于提升SQL查询能力和优化数据库操作有着重要意义。希望本文能帮助你更好地理解和使用MySQL中的CTE,提高工作效率和代码质量。
20 7
|
2月前
|
SQL 关系型数据库 MySQL
Mysql-常用函数及其用法总结
以上列举了MySQL中一些常用的函数及其用法。这些函数在日常的数据库操作中非常实用,能够简化数据查询和处理过程,提高开发效率。掌握这些函数的使用方法,可以更高效地处理和分析数据。
97 19
|
3月前
|
数据采集 关系型数据库 MySQL
MySQL常用函数:IF、SUM等用法
本文介绍了MySQL中常用的IF、SUM等函数及其用法,通过具体示例展示了如何利用这些函数进行条件判断、数值计算以及复杂查询。同时,文章还提到了CASE WHEN语句和其他常用函数,如COUNT、AVG、MAX/MIN等,强调了它们在数据统计分析、数据清洗和报表生成中的重要性。
|
5月前
|
安全 关系型数据库 MySQL
mysql8.0 正值表达式Regular expressions (sample database classicmodels _No.5)
本文介绍了MySQL8.0中的正值表达式及其相关函数,通过实例展示了如何使用正则表达式进行字符串匹配,并提出了关于执行效率的问题。
164 1
|
5月前
|
SQL 关系型数据库 MySQL
MySQL中的 where 1=1会不会影响性能?看完官方文档就悟了!
本文探讨了在Mybatis中使用`where 1=1`进行动态SQL拼接是否会影响性能。通过MySQL官方资料和实际测试表明,`where 1=1`在MySQL 5.7及以上版本中会被优化器优化,因此对性能影响不大。文中详细对比了`where 1=1`与`&lt;where&gt;`标签的使用方法,并建议根据MySQL版本和团队需求选择合适的方式。最后,推荐查找官方资料以确保技术路线正确。
114 4
|
5月前
|
存储 SQL 关系型数据库
mysql用法
mysql用法
76 4
|
6月前
|
存储 自然语言处理 关系型数据库
MySQL的match用法说明
MySQL的match用法说明
231 4
|
3天前
|
SQL 关系型数据库 MySQL
MySQL生产环境迁移至YashanDB数据库深度体验
这篇文章是作者将 MySQL 生产环境迁移至 YashanDB 数据库的深度体验。介绍了 YashanDB 迁移平台 YMP 的产品相关信息、安装步骤、迁移中遇到的各种兼容问题及解决方案,最后总结了迁移体验,包括工具部署和操作特点,也指出功能有优化空间及暂不支持的部分,期待其不断优化。
|
14天前
|
监控 关系型数据库 MySQL
云数据库:从零到一,构建高可用MySQL集群
在互联网时代,数据成为企业核心资产,传统单机数据库难以满足高并发、高可用需求。云数据库通过弹性扩展、分布式架构等优势解决了这些问题,但也面临数据安全和性能优化挑战。本文介绍了如何从零开始构建高可用MySQL集群,涵盖选择云服务提供商、创建实例、配置高可用架构、数据备份恢复及性能优化等内容,并通过电商平台案例展示了具体应用。
|
22天前
|
SQL 关系型数据库 MySQL
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。