第6章 过滤数据

  1. 使用WHERE子句
  2. WHERE子句操作符
  3. 检查单个值
  4. 不匹配检查
  5. 范围值检查
  6. 空值检查

  

一、使用WHERE子句

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

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

  1. select prod_name, prod_price
  2. from products
  3. where prod_price = 2.50;

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

注意:在同时使用order bywhere子句时,应该让order by位于where之后。

  

二、WHERE子句操作符

操作符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于
between在指定的两个值之间

1、检查单个值

  1. select prod_name, prod_price
  2. from products
  3. where prod_name = 'fuses'; // prod_name为字符串类型
注意:MySQL在执行匹配时默认不区分大小写。

2、不匹配检查

  1. select prod_name, prod_price
  2. from products
  3. where prod_price <> 1003;
  4. select prod_name, prod_price
  5. from products
  6. where prod_price != 1003;

3、范围值检查

  1. select prod_name, prod_price
  2. from products
  3. where prod_price between 5 and 10; // 包括5和10

4、空值检查

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

NULL无值,它与字段包含0、空字符串或仅仅包含空格不同。

  select语句有一个特殊的where子句,可用来检查具有NULL值的列。这个where子句就是is null子句。

  1. select prod_name
  2. from products
  3. where prod_price is null;

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

注意:null与不匹配在通过过滤选择出不具有特定值的行时,你可能希望返回具有null值的行。但是,不行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所有在匹配过滤或不匹配过滤时不返回它们。因此,在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有null的行。

  

?