MySQL的查询where语句(十六)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL的查询where语句(十六)

一. where 语句


  • 查询出了数据,但查询的是全部的数据, 当表里面数据量非常大的时候,仅仅需要查询出符合条件的数据就行, 需要对数据进行相应的筛选, 如只查询 年龄>18岁的人, 如只查询性别为男的人,当然也可以查询出 年龄大于18岁且性别为男的。


  • 筛选数据,需要用到 MySQL的运算符, 关于MySQL的运算符, 可以观看老蝴蝶以前写的文章: MySQL的运算符(九)


  • 下面,重点讲解一下,where 语句的用法。


  • 所用命令:


select *|字段列表
  from 表名
  where 筛选条件1 [ [or|and] 筛选条件2 ...]


  • 不同的条件之间,用 and(并且),or(或者) 进行关联。


  • 还是用上一章节的 user 表进行处理。


  • 数据如下:

20191206163931277.png



二. where 的单条件查询语句


  • 常见的运算符,依旧是 第九章节的那些运算符。


  • 凡是数字,都可以直接写出来, 但字符串,都必须要用 ‘’ 进行括起来。 即使是数字形式的字符串,也最好是用 ‘’ 括起来。


二.一  = 等号运算符


1 . 数字类型的等号, 查询 age 为24的用户数据。


select * from user u where u.age=24;


20191206163941561.png


2 . 字符串类型的等号。 查询name 为 ‘岳泽霖’ 的用户数据。


select * from user u where u.name='岳泽霖';


20191206163948672.png


3 . 日期类型的等号 如查询 birthday 为 ‘1995-10-01’ 的人。


select * from user u where u.birthday='1995-10-01';


20191206163956544.png


注意,日期的格式。 如果日期的格式不匹配的话,可以用 date_format(d,f) 进行转换。


select * from user u where date_format(u.birthday,'%Y-%m-%d')='1995-10-01';


20191206164002230.png


4 . mysql函数 重新构造列之后,用= 号。


如上面的日期格式转换,先用 date_format() 日期函数,对birthday 字段进行重新构造,再用 = 号。


也可以用 字符串函数


如 查询 姓名长度为 3的人。


select * from user u where char_length(u.name)=3;


2019120616401167.png


其中, 其它 运算符, 如 !=, >,<,>=,<= 等基本与其一致


如查询 name 不为 ‘岳泽霖’ 的数据。


select * from user u where u.name !='岳泽霖';


20191206164014758.png


name 为空的,不会查询出来。


其他的,就不举例了。


二.二 is null 和is not null 运算符


判断一个,is null是否为空,或者 is not null 不为空。


如:


1 .查询一下, name 为 空的数据


select * from user u where u.name is null;


20191206164024222.png


将那两条 name 为空的数据查询出来了. 不能用=号来判断一下,是否为空。


2 . 查询一下, name 不为空的数据


select * from user u where u.name is not null;


20191206164029603.png


3 . 可以用于任意的类型, 包括日期的类型。


select * from user u where u.birthday is not null;


20191206164036210.png


二.三 in 和 not in 运算符


1 .数字类型in . 查询 age 为23,25,26 的员工。


select * from user u where u.age in (23,25,26);


20191206164042620.png


2 . 字符串类型 in . 查询 name 为 ‘岳泽霖’,‘两个蝴蝶飞’,‘老蝴蝶’ 的.


select * from user u where u.name in ('岳泽霖','两个蝴蝶飞','老蝴蝶');


20191206164049399.png


3 . not in 形式。 与in 正好相反。 如 查询age 不在 23,25,26 的员工。


select * from user u where u.age not in (23,25,26);


20191206164054873.png


二.四 between … and … 和 not between … and … 运算符


常常用于两个数字之间,不建议用在两个字符串之间。


1 . 判断年龄在 18 到 24岁之间


select * from user u where u.age between 18 and 24;


20191206164102992.png


包括 两边的, 是个闭区间。


2 . 判断年龄不在 18岁到24岁之间的


select * from user u where u.age not between 18 and 24;


20191206164108593.png


二.五 like 和not like 运算符


有 % ,_ 两种形式。 % 匹配任意长度的任意字符,包括0长度的字符。 _ 下划线只匹配一个。


1 . like 匹配 % 号。 如 姓名中包含 ‘蝴蝶’ 的。


select * from user u where u.name like '%蝴蝶%';


2019120616411394.png


2 . like 匹配 _ 号。 如 姓名为 ‘精什么妹’ 的,并且为三个字。


select * from user u where u.name like '精_妹';


20191206164118124.png


3 .not like 形式的。 如 姓名中不包含 ‘岳’ 的。


select * from user u where u.name not like '%岳%';


20191206164124171.png


二.六 regexp 和not regexp 运算符


  • ^ 以什么开头, $ 以什么结尾, 主要用于正则验证。 但通常都是用 like 比较多。


  • 1 . 姓名 以 ‘岳’ 开头的。


select * from user u where u.name regexp '^岳';


20191206164129934.png


  • 2 .姓名以 ‘蝴蝶’ 结尾的。


select * from user u where u.name regexp '蝴蝶$';


20191206164135128.png


  • 3 . 姓名中 包含 ‘蝴蝶’ 的


select * from user u where u.name regexp '蝴蝶';


20191206164139908.png


  • 4 . 姓名中不包含 ‘蝴蝶的’。 用 not regexp


select * from user u where u.name not regexp '蝴蝶';


20191206164144107.png


二.七 用 1=1 来进行全部查询


  • 条件用 1=1, 可以表示全部查询,不要筛选条件, 在程序中一般这么使用。


select * from user u where 1=1;


20191206164157448.png


将数据全部查询出来了。


常用的筛选结果运算符,基本就这么多。


三. where 的多条件查询语句


  • 多条件语句,其实就是 将多个 单条件,进行拼接起来, 用 and 或者 or 进行 关联。 and 表示且, 要同时满足, or 表示或, 只要有一个满足即可。


三.一 and 且 进行连接


  • 如查询 性别是男,并且年龄为24 的人。


select * from user u where u.sex='男' and u.age=24;


20191206164153376.png


这两个条件,要同时满足。


三.二 or 或 进行连接


如查询 性别为 男,或者 name 为null 的人。


select * from user u where u.sex='男' or name is null;


20191206164205790.png


只要满足 sex为男, 或者是 名称为 null 就可以了。


三.三 and 和or 混合使用


如查询 年龄>=18,并且 名称为null 或者 id<3的人。


select * from user u where age>=18  and (name is null or id<3);


20191206164217124.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
SQL 缓存 监控
MySQL缓存机制:查询缓存与缓冲池优化
MySQL缓存机制是提升数据库性能的关键。本文深入解析了MySQL的缓存体系,包括已弃用的查询缓存和核心的InnoDB缓冲池,帮助理解缓存优化原理。通过合理配置,可显著提升数据库性能,甚至达到10倍以上的效果。
|
2月前
|
SQL 存储 关系型数据库
MySQL体系结构详解:一条SQL查询的旅程
本文深入解析MySQL内部架构,从SQL查询的执行流程到性能优化技巧,涵盖连接建立、查询处理、执行阶段及存储引擎工作机制,帮助开发者理解MySQL运行原理并提升数据库性能。
|
4月前
|
SQL 人工智能 关系型数据库
如何实现MySQL百万级数据的查询?
本文探讨了在MySQL中对百万级数据进行排序分页查询的优化策略。面对五百万条数据,传统的浅分页和深分页查询效率较低,尤其深分页因偏移量大导致性能显著下降。通过为排序字段添加索引、使用联合索引、手动回表等方法,有效提升了查询速度。最终建议根据业务需求选择合适方案:浅分页可加单列索引,深分页推荐联合索引或子查询优化,同时结合前端传递最后一条数据ID的方式实现高效翻页。
254 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
储存过程(Stored Procedures) 和 函数(Functions) : 储存过程和函数允许用户编写 SQL 脚本执行复杂任务.
206 14
|
2月前
|
SQL 关系型数据库 MySQL
MySQL的查询操作语法要点
以上概述了MySQL 中常见且重要 的几种 SQL 查询及其相关概念 这些知识点对任何希望有效利用 MySQL 进行数据库管理工作者都至关重要
98 15
|
2月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
2月前
|
SQL 关系型数据库 MySQL
MySQL入门指南:从安装到第一个查询
本文为MySQL数据库入门指南,内容涵盖从安装配置到基础操作与SQL语法的详细教程。文章首先介绍在Windows、macOS和Linux系统中安装MySQL的步骤,并指导进行初始配置和安全设置。随后讲解数据库和表的创建与管理,包括表结构设计、字段定义和约束设置。接着系统介绍SQL语句的基本操作,如插入、查询、更新和删除数据。此外,文章还涉及高级查询技巧,包括多表连接、聚合函数和子查询的应用。通过实战案例,帮助读者掌握复杂查询与数据修改。最后附有常见问题解答和实用技巧,如数据导入导出和常用函数使用。适合初学者快速入门MySQL数据库,助力数据库技能提升。
|
3月前
|
存储 关系型数据库 MySQL
使用命令行cmd查询MySQL表结构信息技巧分享。
掌握了这些命令和技巧,您就能快速并有效地从命令行中查询MySQL表的结构信息,进而支持数据库维护、架构审查和优化等工作。
359 9
|
2月前
|
SQL 监控 关系型数据库
MySQL高级查询技巧:子查询、联接与集合操作
本文深入解析了MySQL高级查询的核心技术,包括子查询、联接和集合操作,通过实际业务场景展示了其语法、性能差异和适用场景,并提供大量可复用的代码示例,助你从SQL新手进阶为数据操作高手。
|
4月前
|
人工智能 Java 关系型数据库
Java的时间处理与Mysql的时间查询
本文总结了Java中时间与日历的常用操作,包括时间的转换、格式化、日期加减及比较,并介绍了MySQL中按天、周、月、季度和年进行时间范围查询的方法,适用于日常开发中的时间处理需求。

推荐镜像

更多