【MySQL】一文带你了解过滤数据

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【MySQL】一文带你了解过滤数据

🎬 博客主页:博主链接

🎥 本文由 M malloc 原创,首发于 CSDN🙉

🎄 学习专栏推荐:LeetCode刷题集!

🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

📆 未来很长,值得我们全力奔赴更美好的生活✨

a6c0473e16e249c2b9ca02e5b793f35e.gif

1aabda9202314c9ab0c9028570866fda.png

😇MySQL的前情介绍

😁大家好呀,今天是我第N次写MySQL,也是最近才学习MySQL,也想着记录一下自己的学习过程,并且分享给大家尼!

😇本章详情

🐤本章讲讲授如何使用SELECT语句的WHERE子句指定搜索条件。

😇使用WHERE子句

前言

数据库表一般包含大量的数据,很少需要检索表中所有行。通常只会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指定搜索条件 (search criteria) ,搜索条件也称为过滤条件 (filtercondition)

😇案例分析

💐在SELECT语句中,数据根据WHERE子中指定的搜索条件进行过滤。WHERE子句在表名 (FROM子句) 之后给出,如下所示:

输入

SELECT prod_name,prod_price FROM products
  WHERE prod_price = 2.50;

分析

🌱这条语句从products表中检索两个列,但不返回所有行,只返回prod_price值为2.50的行,如下所示:

输出

f71320fc9b1349beb620398576083415.png

🌻这个例子采用了简单的相等测试:它检查一个列是否具有指定的值,据此进行过滤。但是SQL允许做的事情不仅仅是相等测试。

😇SQL过滤与应用过滤

SQL过滤与应用过滤 数据也可以在应用层过滤。为此目的,SQL的SELECT语句为客户机应用检索出超过实际所需的数据,然后客户机代码对返回数据进行循环,以提取出需要的行。

🌼通常,这种实现并不令人满意。因此,对数据库进行了优化以便快速有效地对数据进行过滤。让客户机应用(或开发语言)处理数据库的工作将会极大地影响应用的性能,并且使所创建的应用完全不具备可伸缩性。此外,如果在客户机上过滤数据服务器不得不通过网络发送多余的数据,这将导致网络带宽的浪费。

😇WHERE子句的位置

WHERE子句的位置 在同时使用ORDER BY和WHERE子句时应该让ORDER BY位于WHERE之后,否则将会产生错误(关于ORDERBY的使用,请参阅作者的前几篇文章)

😇WHERE子句操作符

提示

我们在关于相等的测试时看到了第一个WHERE子句,它确定一个列是否包含特定的值。MySQL支持如下表格列出的所有条件操作符。

表格

37da7878840b4d82aade845960f22700.png

😇检查单个值

如上所示。我们已经看到了测试相等的例子。再来看一个类似的例子:

输入

SELECT prod_name,prod_price FROM products 
  WHERE prod_name = 'fuses';

输出

c85d123c4e954df5b74c9c51f6260db0.png

分析

🌼检查WHERE prod_name=fuses’语句,它返回prod_name的值为Fuses的一行。MySQL在执行匹配时默认不区分大小写所以fuses与Fuses匹配。

😇多个例子讲解

⭐第一个例子是列出价格小于10美元的所有产品:

输入

SELECT prod_name,prod_price FROM products 
  WHERE prod_price < 10;

输出

fe5447b6f29444b68cf4f1075421ad5a.png

⭐第二个例子检索价格小于等于10美元的所有产品(输出的结果比第个例子输出的结果多两种产品):

输入

SELECT prod_name,prod_price FROM products
  WHERE prod_price <= 10;

输出

178312bb7163451cb9df22a0371cf4e2.png

😇范围值检查

概要

🌕为了检查某个范围的值,可使用BETWEEN操作符。其语法与其他WHERE子句的操作符稍有不同,因为它需要两个值,即范围的开始值和结束值。

🌕例如,BETWEEN操作符可用来检索价格在5美元和10美元之间或日期在指定的开始日期和结束日期之间的所有产品。

举例分析

下面的例子说明如何使用BETWEEN操作符,它检索价格在5美元和10美元之间的所有产品:

输入

SELECT prod_name,prod_price FROM products
  WHERE prod_price BETWEEN 5 AND 10;

输出

6ee894a1815740d3846636402e3f24eb.png

分析

从这个例子中可以看到,在使用BETWEEN时,必须指定两个值一一所需范围的低端值和高端值。这两个值必须用AND关键字分隔。BETWEEN匹配范围中所有的值,包括指定的开始值和结束值。

😇空值检查

在创建表时,表设计人员可以指定其中的列是否可以不包含值。在个列不包含值时,称其为包含空值NULL。

理论概述

🌠NULL 无值(no value) 它与字段包含0、空字符串或仅仅包含空格不同。

SELECT语句有一个特殊的WHERE子句,可用来检查具有NULL值的列。这个WHERE子句就是IS NULL子句。其语法如下:

输入

SELECT prod_name FROM products
  WHERE prod_price IS NULL;

这条语句返回没有价格(空prod_price字段,不是价格为0)的所有产品,由于表中没有这样的行,所以没有返回数据。但是,customers表确实包含有具有空值的列,如果在文件中没有某位顾客的电子邮件地址,则cust_email列将包含NULL值:

输入

SELECT cust_id FROM customers
  WHERE cust_email IS NULL;

输出

96e138cc27ed45f6a56ff53c4ed4df49.png

😇NULL与不匹配

🌞NULL与不匹配 在通过过滤选择出不具有特定值的行时,你可能希望返回具有NULL值的行。但是,不行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们.

🌞因此,在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有NULL的行

🤣如何巩固学习

提示:在学习的过程中,我们需要先自行进行思考,而不是一遇到不会的就放弃思考直接看答案,如果最后遇到真的不会的题目,我们可以适当的进行观看答案,看自己的思路是否正确,在作出正确的判断

🤣本文小结

本文章介绍了如何用SELECT语句的WHERE子句过滤返回的数据。我们学习了如何对相等、不相等、大于、小于、值的范围以及NULL值等进行测试。

好啦今日的分享到这里就结束啦,我是爱你们的M malloc希望可以帮助到你们噢,最后别忘记三连啦!!

7cbdf42b92004270a969feb4c42a58c7.png

1eb3d97d33b44ab691a9728de479cfb9.gif

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
关系型数据库 MySQL Java
【MySQL+java+jpa】MySQL数据返回项目的感悟
【MySQL+java+jpa】MySQL数据返回项目的感悟
41 1
|
1月前
|
SQL 监控 关系型数据库
MySQL怎么全局把一张表的数据回滚
MySQL怎么全局把一张表的数据回滚
91 2
|
1月前
|
存储 SQL 关系型数据库
MySQL批量添加数据并取外表的某个字段值
MySQL批量添加数据并取外表的某个字段值
59 1
|
17天前
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
104 0
|
23天前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
41 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
28天前
|
关系型数据库 MySQL 数据库
mysql 里创建表并插入数据
【10月更文挑战第5天】
110 1
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
47 3
|
2天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
29 9
|
14天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
10天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
25 1