SQL WHERE

摘要:在本教程中,您将学习如何使用 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 > 1000Code language: SQL (Structured Query Language) (sql)

该语句提出一个问题:“薪酬是否大于 1000?”。

或者,您可以在运算符的两侧使用列名称,例如

min_salary < max_salaryCode language: SQL (Structured Query Language) (sql)

此表达式提出另一个问题:“最小薪酬是否小于最大薪酬?”。

您在表达式中使用的文本值可以是数字、字符、日期和时间,具体取决于所使用的格式

  • 数字:使用可以为整数或小数的数字,无需任何格式,如 100、200.5
  • 字符:使用用单引号或双引号引起来的字符,如 “100”、“John Doe”。
  • 日期:使用数据库存储的格式。该格式取决于数据库系统,如 MySQL 使用 'yyyy-mm-dd' 格式来存储 日期 数据。
  • 时间:使用数据库系统用于存储时间时间的格式。例如,MySQL 使用 'HH:MM:SS' 来存储时间数据。

除了 SELECT 语句以外,您还可以在 UPDATEDELETE 语句中使用 WHERE 子句来指定要更新或删除的行。

SQL WHERE 示例

我们将使用 employees 表来演示如何使用 WHERE 子句从表中选择数据。

employees_table

具有数字比较示例的 SQL WHERE 子句

以下查询查找薪酬高于 14,000 的员工,并且 根据薪酬按降序对结果集进行排序

SELECT
	employee_id,
	first_name,
	last_name,
	salary
FROM
	employees
WHERE
	salary > 14000
ORDER BY
	salary DESC;

试述

SQL WHERE numeric example

以下查询查找在部门 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)

试述

SQL WHERE characters comparison

但是,如果您使用“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)

试述

SQL WHERE date example

如果您想找到 1999 年加入公司的员工,您可以通过多种方式

  1. 使用“YEAR”函数从“hire_date”列中获取年份数据,并使用等于 (=) 运算符形成表达式。
  2. 使用“AND”运算符使用两个表达式。
  3. 使用“BETWEEN”运算符。

以下语句说明了第一种方法

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 date equals

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

本教程是否有帮助?