第六章 过滤数据

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


使用WHERE子句

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

SELECT prod_name, prod_price
FROM products
WHERE prod_price = 2.50;

 SQL过滤与应用过滤

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

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

 WHERE子句操作符

MySQL在执行匹配时默认不区分大小写,也会匹配出Fuses

SELECT prod_name, prod_price
FROM products
WHERE prod_name = 'fuses';
SELECT prod_name, prod_price
FROM products
WHERE prod_price < 10;
SELECT prod_name, prod_price
FROM products
WHERE prod_price <= 10;
SELECT vend_id, prod_name
FROM products
WHERE vend_is <> 10;
SELECT vend_id, prod_name
FROM products
WHERE vend_id != 1003;
SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10;

BETWEEN a AND b,包括指定的开始值和结束值。

SELECT prod_name
FROM products
WHERE prod_name IS NULL;

NULL与不匹配

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值