【MySQL必知必会】:过滤数据

74 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情

一、前言

大家好,今天文章的内容是:

  • 【使用 where 子句指定搜索条件。】

二、内容

2.1、WHERE 子句

数据库中的表一般会包含大量的数据,通常来说,我们会根据需求来将表中查询到的数据进行过滤,从而提取返回结果的一个子集。像这种需求就可以使用 WHERE 子句来完成。

也就是说,在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤,WHERE 子句在表名(FROM子句)之后给出。

备注:WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。

2.2、语法

下面是 WHERE 子句的语法:

SELECT
    字段1, 字段2,...字段N
FROMWHERE
    条件1 [AND [OR]] 条件2 ...

解析如下:

  • 上述语句我们使用了 WHERE 子句来设置数据过滤条件
  • 你可以在 WHERE 子句中指定任何条件。
  • 我们可以指定多个条件,各个条件之间用 AND 或者 OR 隔开
  • 另外需要注意,WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令

这里举一个例子:

SELECT
    P_name, p_price
FROM
    products
WHERE
    p_price = 100;

上述语句从 product 表中检索两个列,并根据搜索条件 p_price = 100 进行数据过滤,最后只返回 p_price 值为 100 的行。

备注:

如果同时使用ORDER BY子句和WHERE子句,那么应该让ORDER BY子句位于WHERE子句之后,否则将产生错误。

2.3、条件操作符

在前面 WHERE 子句的例子中,我们使用了条件操作符=

下面给出 MySQL 的条件操作符:

  • =:等于
  • <>:不等于
  • !=:不等于
  • <:小于
  • >:大于
  • <=:小于等于
  • >=:大于等于
  • BETWEEN:在指定的两个值之间

这里再举几个使用 WHERE 子句的例子。

  • 返回品牌名为 HUAWEI 的行:
SELECT
    p_brand, p_name, p_price
FROM
    products
WHERE
    p_brand = 'HUAWEI';
  • 返回品牌名不是 HUAWEI 的行:
SELECT
    p_brand, p_name, p_price
FROM
    products
WHERE
    p_brand <> 'HUAWEI';
-- 当然也可以使用 != 来代替 <>
  • 返回价格小于 100 的所有行:
SELECT
    p_name, p_price
FROM
    products
WHERE
    p_price < 100;
  • 返回价格在 20 和 100 之间的所有行:
SELECT
    p_name, p_price
FROM
    products
WHERE
    p_price BETWEEN 20 AND 100;
-- BETWEEN匹配范围中的所有值,并且包括指定的开始值和结束值

2.4、空值检查

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

我们可以通过WHERE子句来检查表中是否具有 NULL 值的列。

举个例子,下面语句用于检索学生表中的 stu_id 列包含 NULL 值的所有行。

SELECT
    stu_name
FROM
    students
WHERE
    stu_id IS NULL;

三、后话

好了,今天的文章内容就到这里,感谢观看。