摘要:在本教程中,您将学习如何使用 SQL WHERE
子句基于指定条件筛选行。
SQL WHERE 子句介绍
要从表中选出特定行,可在 SELECT
语句中使用 WHERE
子句。以下说明了 SELECT
语句中 WHERE
子句的语法
SELECT
column1, column2, ...
FROM
table_name
WHERE
condition;
Code language: SQL (Structured Query Language) (sql)
WHERE
子句紧跟在 FROM
子句后面。 WHERE
子句包含一个或多个逻辑表达式,这些表达式评估表中的每一行。如果由于条件导致该行评估为真,该行将包含在结果集中;否则,该行将被排除在外。
请注意,SQL 具有真值、假值和未知值的三值逻辑。这意味着,如果由于条件导致该行评估为假或空,该行将不会被返回。
请注意,WHERE
子句后面的逻辑表达式也称为谓词。您可以在 WHERE
子句中使用各种运算符来形成行选择标准。
下表显示了 SQL 比较运算符
运算符 | 含义 |
---|---|
= | 等于 |
<> (!=) | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于或等于 |
>= | 大于或等于 |
若要形成简单表达式,可使用上述运算符之一以及两个操作数,操作数可以为一侧的列名称,另一侧的文本值,例如
salary > 1000
Code language: SQL (Structured Query Language) (sql)
该语句提出一个问题:“薪酬是否大于 1000?”。
或者,您可以在运算符的两侧使用列名称,例如
min_salary < max_salary
Code language: SQL (Structured Query Language) (sql)
此表达式提出另一个问题:“最小薪酬是否小于最大薪酬?”。
您在表达式中使用的文本值可以是数字、字符、日期和时间,具体取决于所使用的格式
- 数字:使用可以为整数或小数的数字,无需任何格式,如 100、200.5
- 字符:使用用单引号或双引号引起来的字符,如 “100”、“John Doe”。
- 日期:使用数据库存储的格式。该格式取决于数据库系统,如 MySQL 使用
'yyyy-mm-dd'
格式来存储 日期 数据。 - 时间:使用数据库系统用于存储时间时间的格式。例如,MySQL 使用
'HH:MM:SS'
来存储时间数据。
除了 SELECT
语句以外,您还可以在 UPDATE
或 DELETE
语句中使用 WHERE
子句来指定要更新或删除的行。
SQL WHERE 示例
我们将使用 employees
表来演示如何使用 WHERE
子句从表中选择数据。

具有数字比较示例的 SQL WHERE 子句
以下查询查找薪酬高于 14,000 的员工,并且 根据薪酬按降序对结果集进行排序。
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
salary > 14000
ORDER BY
salary DESC;

以下查询查找在部门 ID 为 5 中工作的员工。
SELECT
employee_id,
first_name,
last_name,
department_id
FROM
employees
WHERE
department_id = 5
ORDER BY
first_name;
Code language: SQL (Structured Query Language) (sql)
具有字符示例的 SQL WHERE 子句
SQL 不区分大小写。但是,当比较值时,它区分大小写。例如,下面的查询查找姓氏为“Chen”的员工。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
last_name = 'Chen';
Code language: SQL (Structured Query Language) (sql)

但是,如果您使用“CHEN”或“chen”,则不会返回任何行。
具有日期示例的 SQL WHERE 子句
若要获取在“1999 年 1 月 1 日”后加入公司的所有员工,请使用以下查询
SELECT
employee_id,
first_name,
last_name,
hire_date
FROM
employees
WHERE
hire_date >= '1999-01-01'
ORDER BY
hire_date DESC;
Code language: SQL (Structured Query Language) (sql)

如果您想找到 1999 年加入公司的员工,您可以通过多种方式
以下语句说明了第一种方法
SELECT
employee_id,
first_name,
last_name,
hire_date
FROM
employees
WHERE
YEAR (hire_date) = 1999
ORDER BY
hire_date DESC;
Code language: SQL (Structured Query Language) (sql)

在本教程中,我们向您展示了如何使用 SQL `WHERE` 子句基于指定条件筛选数据。