MySql where 查询条件与运算符

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySql where 查询条件与运算符

where 是 sql语句 中的条件关键字,类似于其他语言的额 if,只要是条件查询,就一定需要用到各种 条件运算符 来配合,我们就用下面的表来进行简单的学习测试。


mysql> select * from test; +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | | 2 | xyq | 20 | | 3 | xyq | 20 | +----+------+------+


算数运算符:


+ - * / % 加 减 乘 除 取余


mysql> select * from test where id=1+1; +----+------+------+ | id | name | age | +----+------+------+ | 2 | xyq | 20 | +----+------+------+


比较运算符:


相等: = 不相等: <> 或 != 大于: > 大于等于: >= 小于:< 小于等于:<= ``` mysql> select * from test where id=1; +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | +----+------+------+


mysql> select * from test where name!='dzm'; +----+------+------+ | id | name | age | +----+------+------+ | 2 | xyq | 20 | | 3 | xyq | 20 | +----+------+------+ ``` * 逻辑运算符:


逻辑与:&& 或 and 逻辑或:|| 或 or 逻辑非:! 或 not


``` mysql> select * from test where id=1 and age=20; +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | +----+------+------+ 上面的 and 判断条件还可以写成这样 row 关键字可以省略: mysql> select * from test where (id, age) = (1, 20); mysql> select * from test where row(id, age) = (1, 20); +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | +----+------+------+


mysql> select * from user where name='dzm' or age=20; +----+-------+------+ | id | name | age | +----+-------+------+ | 1 | dzm | 20 | +----+-------+------+


mysql> select * from test where not name='dzm'; +----+------+------+ | id | name | age | +----+------+------+ | 2 | xyq | 20 | | 3 | xyq | 20 | +----+------+------+ ```


like 模糊查询运算符:


`` like:用来判断某个字符字段的值是否包含给定的字符,如果包含则放入查询结果。 %:代表任意个数的任意字符,也可以叫通配符。 _:代表一个任意字符,也就是用一个_`下杠,就代表一个字符,多个就多个字符。


查询出 name 字段中所有完全等于 y 字符的,这么写的也就相当于 name='y',多一个少一个都不行,必须相等 select * from test where name like 'y';


查询出 name 字段中所有包含 y 字符的 select * from test where name like '%y%';


查询出 name 字段中所有以 y 字符结尾的 select * from test where name like '%y';


查询出 name 字段中所有以 y 字符开头的 select * from test where name like 'y%';


查询出 name 字段中所有刚好 3 个字符且第 2 个字符为 y 的 select * from test where name like 'y';


查询出 name 字段中所有刚好 3 个字符且第 2 个字符为 y 的 select * from test where name like '__y';


查询出 name 字段中所有刚好 2 个字符且第 1 个字符为 y 的 select * from test where name like 'y_';


查询出 name 字段中所有最少 2 个字符且第 2 个字符为 y 的,y 字符后面有N个字符都行 select * from test where name like '_y%'; ```


``` mysql> select * from test where name like '%y%'; +----+------+------+ | id | name | age | +----+------+------+ | 2 | xyq | 20 | | 3 | xyq | 20 | | 4 | djy | 5 | +----+------+------+


mysql> select * from test where name like '%m'; +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | +----+------+------+


mysql> select * from test where name like '__m'; +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | +----+------+------+


mysql> select * from test where name like '_z%'; +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | +----+------+------+ ``` between 范围限定运算符:


``` between:用于判断某个字段的值是否在给定的两个数据范围之间。


select * from test where id between 2 and 3; 其实就相当于: select * from test where id>=2 and id<=3; ```


``` mysql> select * from test where id between 2 and 3; +----+------+------+ | id | name | age | +----+------+------+ | 2 | xyq | 20 | | 3 | xyq | 20 | +----+------+------+ mysql> select * from test where id between 2 and 1; Empty set (0.00 sec)


也相当于: mysql> select * from test where id>=2 and id<=3; +----+------+------+ | id | name | age | +----+------+------+ | 2 | xyq | 20 | | 3 | xyq | 20 | +----+------+------+ ```


in 运算符:


``` in:用于判断某个字段的值是否存在指定的值列表中,存在就算成立。


相当于 name 字段只要存在 in 后面的列表中即可,也可以说 in 后面的数组包含 name 字段值即可。 select * from test where name in ('d', 'z', 'm', 'dzm'); ```


``` mysql> select * from test where name in ('d', 'z', 'm'); Empty set (0.00 sec) mysql> select * from test where name in ('d', 'z', 'm', 'dzm'); +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | +----+------+------+


也相当于: mysql> select * from test where name='d' or name='z' or name='m' or name='dzm'; +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | +----+------+------+ ```


is 运算符:


``` is: 用于判断一个字段值是否存在或不存在,它只有两种写法,要么 is null 要么 is not null: select * from test where name is null; select * from test where name is not null;


null 与 not null 必须用 is 来判断,is 也是专用于这两个值使用,不能写成: select * from test where name=null; select * from test where name=not null;


测试数据: mysql> select * from test; +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | | 2 | xyq | 20 | | 3 | xyq | 20 | | 4 | djy | 5 | | 5 | NULL | NULL | +----+------+------+ ```


``` mysql> select * from test where name is null; +----+------+------+ | id | name | age | +----+------+------+ | 5 | NULL | NULL | +----+------+------+


mysql> select * from test where name is not null; +----+------+------+ | id | name | age | +----+------+------+ | 1 | dzm | 20 | | 2 | xyq | 20 | | 3 | xyq | 20 | | 4 | djy | 5 | +----+------+------+ ```


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
25 9
|
3天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
13 3
|
8天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
9天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
23 1
|
7天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
38 0
|
7天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
34 0
|
9天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
20 0
|
26天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
103 6
|
23天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
56 3
Mysql(4)—数据库索引
|
9天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
45 2