美文网首页
_4_ SQL 过滤数据(WHERE)

_4_ SQL 过滤数据(WHERE)

作者: changsanjiang | 来源:发表于2018-06-26 22:46 被阅读11次

本文demo

https://gitee.com/changsanjiang/SQLDemo/tree/master

使用WHERE子句(操作符 =)

表中一般包含大量的数据, 我们通常只检索所需的数据. 因此需要指定搜索条件(search criteria), 搜索条件也称为过滤条件(filter condition).

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

SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49;

分析:

这条语句从 products 表中检索两个列, 只返回prod_price值为3.49的行.

输出:

image.png

这个示例使用了简单的相等检验: 即检查这一列的值是否为指定值(prod_price = 3.49), 据此过滤数据. 不过, SQL不止能测试等于, 还能做更多的事情.

**提示**
数据虽然也可以在应用层进行过滤. 
但为此, SQL的SELECT语句将为客户端应用检索出超过实际所需的数据, 客户端据此数据进行循环过滤, 提取所需行.

通常, 这种做法及其不妥.
优化数据库后可以更快速有效地对数据进行过滤. 而让客户端应用处理数据库的工作将会极大地影响应用的性能.
并且使所创建的应用完全不具备可伸缩性. 
此外, 如果在客户端过滤数据, 服务器不得不通过网络发送多余数据, 这将导致网络带宽的浪费.

WHERE子句操作符

下表列出了所有条件操作符.

操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
!< 不小于(相当于>=)
!> 不大于(相当于<=)
BETWEEN 在指定的两个值之间
IS NULL 为NULL的值
**注意: 操作符兼容**
上表中列出的某些操作符是冗余的. 例如`<>`和`!=`都表示为不等于.
并非所有DBMS都支持这些操作符. 请参阅相应的DBMS文档, 确定支持哪些操作.

操作符 <<=

我们再来举两个简单操作的例子. 如下, 列出所有价格小于5美元的产品.

SELECT prod_name, prod_price
FROM Products
WHERE prod_price < 5;

输出:

image.png

如下, 列出 <= 10美元的产品

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

输出:

image.png

范围值检查(操作符BETWEEN)

BETWEEN操作符用来检查某个范围的值. 它需要两个值, 即范围的开始与结束. 其语法与其他WHERE子句的操作符稍有不同.

如下, 检索3.49美元和5美元之间的产品.

SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 3.49 AND 5;

输出:

image.png

分析:

在使用BETWEEN时, 必须指定两个值. 同时必须用AND关键字分隔. BETWEEN匹配的值包括指定的开始值和结束值.


空值检查( NULL )

在一个列不包含值时, 称其包含空值NULL. 它与字段包含0或空字符串或仅仅包含空格不同.

确定是否为NULL, 不能简单的检查是否等于NULL(prod_name = NULL ❌), 正确的操作是使用 IS NULL子句. 其语法如下:

SELECT *
FROM Products
WHERE prod_desc IS NULL;

输出:

image.png

另外, IS NULL也可写为ISNULL. 如下:

SELECT *
FROM Products
WHERE prod_desc ISNULL;

相关文章

  • _4_ SQL 过滤数据(WHERE)

    本文demo https://gitee.com/changsanjiang/SQLDemo/tree/maste...

  • 4. 过滤数据

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

  • SQL一些关键字

    SQL一些常用的关键字 1、Having,跟where一样用于过滤但是where用于过滤行,而having用于过滤分组。

  • SQL WHERE 子句

    WHERE子句用于过滤记录 WHERE 子句用于提取那些满足指定条件的记录 SQL WHERE语法 SELECT ...

  • 《SQL必知必会》笔记3-过滤where、and、or、in、通

    1 过滤检索数据(WHERE) 1.1 使用WHERE子句 WHERE子句指定对搜索条件进行过滤。 注意:在同时使...

  • MySQL

    数据类型 sql基础 数据库表 SQL SELECT 语句: SQL WHERE 子句: SQL AND & OR...

  • oracle学习笔记二——查询之过滤和排序

    二、过滤和排序 1.过滤:where (1)等值查询: --查询10号部门的员工 SQL>select * fro...

  • mysql语句执行顺序

    [doc] 准备工作 SQL逻辑查询语句执行顺序 执行FROM语句 执行ON过滤 添加外部行 执行WHERE过滤 ...

  • 第五课 高级数据过滤

    利用 WHERE 子句使用 NOT 和 IN 操作符 一、组合WHERE子句 为更强的过滤,SQL允许多个 WHE...

  • Flink 1.12 的bug吗?

    where 条件中 包含 OR 和 IS NULL 的 SQL 过滤会失效 。 例如: select * fr...

网友评论

      本文标题:_4_ SQL 过滤数据(WHERE)

      本文链接:https://www.haomeiwen.com/subject/xnxvyftx.html