mysql过滤看过的帖子_mysql必知必会--过 滤 数 据

使用 WHERE 子句

数据库表一般包含大量的数据,很少需要检索表中所有行。通常只

会根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要

指定搜索条件(search criteria),搜索条件也称为过滤条件(filter

condition)。

在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。

WHERE 子句在表名( FROM 子句)之后给出,

5cec52a4a5893e400f5d33c461214643.png

这条语句从 products 表中检索两个列,但不返回所有行,只返

回 prod_price 值为 2.50 的行

这个例子采用了简单的相等测试:它检查一个列是否具有指定的值,

据此进行过滤。但是SQL允许做的事情不仅仅是相等测试

SQL过滤与应用过滤 数据也可以在应用层过滤。为此目

的,SQL的 SELECT 语句为客户机应用检索出超过实际所需的

数据,然后客户机代码对返回数据进行循环,以提取出需要

的行。

通常,这种实现并不令人满意。因此,对数据库进行了优化,

以便快速有效地对数据进行过滤。让客户机应用(或开发语言)

处理数据库的工作将会极大地影响应用的性能,并且使所创建

的应用完全不具备可伸缩性。此外,如果在客户机上过滤数据,

服务器不得不通过网络发送多余的数据,这将导致网络带宽的

浪费。

WHERE 子句的位置 在同时使用 ORDER BY 和 WHERE 子句时,应

该让 ORDER BY 位于 WHERE 之后,否则将会产生错误

WHERE 子句操作符

我们在关于相等的测试时看到了第一个 WHERE 子句,它确定一个列是

否包含特定的值。MySQL支持表6-1列出的所有条件操作符

58e8dbc6440d80afed3549bbc9ceaedd.png

不匹配检查

以下例子列出不是由供应商 1003 制造的所有产品

28468c59b8cbf92030576e8694554768.png

何时使用引号单引号用来限定字符串。如果将值与串类型的

列进行比较,则需要限定引号。用来与数值列进行比较的值不

用引号。

下面是相同的例子,其中使用 != 而不是 <> 操作符:

a75060b4501e731c80aca0d0e1200d4e.png

范围值检查

为了检查某个范围的值,可使用 BETWEEN 操作符。其语法与其他 WHERE

子句的操作符稍有不同,因为它需要两个值,即范围的开始值和结束值。

例如, BETWEEN 操作符可用来检索价格在5美元和10美元之间或日期在指

定的开始日期和结束日期之间的所有产品

下面的例子说明如何使用 BETWEEN 操作符,它检索价格在5美元和10

美元之间的所有产品

a00d850d8a9a74632057d677b711a3d7.png

从这个例子中可以看到,在使用 BETWEEN 时,必须指定两个值

——所需范围的低端值和高端值。这两个值必须用 AND 关键字

分隔。 BETWEEN 匹配范围中所有的值,包括指定的开始值和结束值

空值检查

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

一个列不包含值时,称其为包含空值 NULL

NULL 无值(no value),它与字段包含 0 、空字符串或仅仅包含

空格不同

SELECT 语句有一个特殊的 WHERE 子句,可用来检查具有 NULL 值的列。

这个 WHERE 子句就是 IS NULL 子句。其语法如下:

c4efdc375810825b5cde8dfd6d789d52.png

这条语句返回没有价格(空 prod_price 字段,不是价格为 0 )的所有

产品,由于表中没有这样的行,所以没有返回数据

NULL 与不匹配 在通过过滤选择出不具有特定值的行时,你

可能希望返回具有 NULL 值的行。但是,不行。因为未知具有

特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤

或不匹配过滤时不返回它们。

因此,在过滤数据时,一定要验证返回数据中确实给出了被

过滤列具有 NULL 的行。

本章介绍了如何用 SELECT 语句的 WHERE 子句过滤返回的数据。我们学

习了如何对相等、不相等、大于、小于、值的范围以及 NULL 值等进行测

试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值