问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

SQL WHERE子句详解:基于条件筛选数据

创作时间:
作者:
@小白创作中心

SQL WHERE子句详解:基于条件筛选数据

引用
1
来源
1.
https://sqltutorial.cn/sql-where/

SQL的WHERE子句是数据查询中非常重要的一个部分,它允许我们根据特定条件筛选数据。本文将详细介绍WHERE子句的语法、常用运算符以及在实际查询中的应用,帮助读者掌握这一核心技能。

SQL WHERE子句介绍

要从表中选出特定行,可在SELECT语句中使用WHERE子句。以下说明了SELECT语句中WHERE子句的语法:

SELECT 
    column1, column2, ...
FROM
    table_name
WHERE
    condition;

WHERE子句紧跟在FROM子句后面。WHERE子句包含一个或多个逻辑表达式,这些表达式评估表中的每一行。如果由于条件导致该行评估为真,该行将包含在结果集中;否则,该行将被排除在外。

请注意,SQL具有真值、假值和未知值的三值逻辑。这意味着,如果由于条件导致该行评估为假或空,该行将不会被返回。

请注意,WHERE子句后面的逻辑表达式也称为谓词。您可以在WHERE子句中使用各种运算符来形成行选择标准。

下表显示了SQL比较运算符:

运算符
含义
=
等于
<> (!=)
不等于
<
小于
>
大于
<=
小于或等于
>=
大于或等于

若要形成简单表达式,可使用上述运算符之一以及两个操作数,操作数可以为一侧的列名称,另一侧的文本值,例如:

salary > 1000

该语句提出一个问题:“薪酬是否大于1000?”。或者,您可以在运算符的两侧使用列名称,例如:

min_salary < max_salary

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

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

  • 数字:使用可以为整数或小数的数字,无需任何格式,如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;

具有字符示例的SQL WHERE子句

SQL不区分大小写。但是,当比较值时,它区分大小写。例如,下面的查询查找姓氏为“Chen”的员工:

SELECT
    employee_id,
    first_name,
    last_name
FROM
    employees
WHERE
    last_name = 'Chen';

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

如果您想找到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;

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

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号