PostgreSQL WHERE 子句

17 Mar 2025 | 5 分钟阅读

在本节中,我们将了解 PostgreSQL where 子句的工作原理,它用于过滤 Select 命令返回的行。

WHERE 条件用于描述从表或连接各种表获取数据时的条件。它通常与 SELECT、UPDATE 和 DELETE 命令一起使用,以过滤输出。 仅当满足条件时,它才会返回准确的结果。

注意:要选择满足详细条件的行,我们使用 WHERE 子句。SELECT 命令返回表中一列或多列的所有行。

PostgreSQL WHERE 子句的语法

PostgreSQL WHERE 条件的语法如下

Select 命令中,WHERE 条件位于 FROM 子句之后。 该条件用于过滤从 SELECT 命令返回的行。

where 子句可以是 Boolean 表达式,或者如果我们使用 AND & OR 运算符,则可以是 Boolean 表达式的组合。 该子句必须评估为 true、false 或 unknown

WHERE 条件以下列格式工作

它从 From 子句开始 然后执行 Where 条件 → 之后它将 Select 特定的列 然后由 Order by 子句执行。

PostgreSQL WHERE Clause

WHERE 条件不支持 SELECT 命令下的 列别名。 Where 子句支持 DELETEUPDATE 命令,用于定义已删除和已更新的行。

WHERE 条件 可以与 逻辑和比较运算符 一起使用,如下表所示

不同的运算符描述
并且逻辑运算符 AND
逻辑运算符 OR
=Equal
>大于
<小于
<> 或 !=不等于
>=大于或等于
<=小于或等于
IN如果某个值与列表中的任何值匹配,则 IN 运算符将返回 true
喜欢如果某个值与某个模式匹配,则 LIKE 运算符用于返回 true
BETWEEN如果某个值介于某个值范围内,则 BETWEEN 运算符用于返回 true
NOT否定其他运算符的结果
IS NULL如果某个值为 NULL,则用于返回 true。

PostgreSQL WHERE 条件的示例

让我们看一些示例,在这些示例中,我们将学习 WHERE 子句 在 PostgreSQL 中的工作方式。

为此,我们将采用我们在 PostgreSQL 教程的早期部分中创建的 Employee 表。

下面的屏幕截图定义了 Employee 表中存在的不同列

PostgreSQL WHERE Clause

在上表中,我们将使用 where 子句 执行 不同类型的运算符

  • 使用 WHERE 子句的 AND 运算符的示例

在下面的示例中,我们将使用 And 逻辑运算符 来组合 employee 表中的两个 Boolean 表达式,以查找 first_name 为 Mia 且 last_nameSmith 的记录。

输出

在执行上述命令后,我们将获得以下输出

PostgreSQL WHERE Clause
  • 使用 WHERE 子句的 (=) 等于运算符的示例

在下面的命令中,我们使用 等于 (=) 运算符employee 表中使用 where 条件 来标识 last_name 等于 smith 的记录。

输出

执行上述命令后,我们将获得下面的输出,该输出将提取 last _name 等于 smith 的两条记录。

PostgreSQL WHERE Clause
  • 使用 WHERE 子句的 OR 运算符的示例

在下面的示例中,我们将使用 employee 表中的 OR 逻辑运算符 来标识 first_nameMeganlast_nameWill 的记录。

输出

在实现上述命令后,我们将获得以下输出

PostgreSQL WHERE Clause
  • 使用 WHERE 子句的 LIKE 运算符的示例

在这里,我们将使用 LIKE 运算符 来标识与定义的模式匹配的字符串。

以下命令显示了 employee 表中 last_name 以字符串 smi 开头的那些记录。

输出

执行上述命令后,我们将获得以下输出,其中上述查询提取了 last_namesmi 字符串 开头的 四条记录

PostgreSQL WHERE Clause

注意:在上面的命令中,% 被称为通配符,它有助于匹配任何字符串。 'smi%' 模式匹配那些以 'smi' 开头的字符串。

  • 使用 WHERE 子句的 IN 运算符的示例

在这里,我们将使用 IN 运算符 将字符串与列表中的任何字符串匹配。

以下命令显示了 employee 表中 last_namesmi, smith 的那些记录。

输出

一旦我们实现了上述命令,我们将得到以下输出

PostgreSQL WHERE Clause
  • 使用 WHERE 子句的 BETWEEN 运算符的示例

在下面的命令中,我们将使用 Between 运算符 来显示以字符串 ith 结尾,并且在 employee 表中具有 2 到 6 个字符的 last_name

注意:在此,我们使用 LENGTH() 函数来获取输入字符串字符的数量。

输出

执行上述命令后,我们将获得以下输出,其中上述查询提取了与 ith 字符串 匹配的两个记录,并且 名称长度 介于 2 到 6 之间。

PostgreSQL WHERE Clause
  • 使用 WHERE 子句的不等于运算符 (<>) 的示例

在下面的示例中,我们将使用 不等于 <> 运算符来标识 addressNew string 开头,并且 first_name 不等于 Olivia 的那些 employees

输出

执行上述命令后,我们将获得以下输出,其中查询提取了 addressNew string 匹配,并且 first_name 不等于 Olivia两条记录

PostgreSQL WHERE Clause

注意:我们可以同时使用 <> 运算符和 != 运算符,因为它们是相似的,正如我们在下面的命令中看到的那样

输出

执行上述命令后,我们将获得以下输出,其中查询提取了地址以 new string 开头,并且 first_name 不等于 John 的一条记录。

PostgreSQL WHERE Clause