📜  PostgreSQL Where子句

📅  最后修改于: 2020-11-30 08:42:38             🧑  作者: Mango

PostgreSQL WHERE子句

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

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

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

PostgreSQL WHERE子句的语法

PostgreSQL WHERE条件的语法如下:

SELECT column1, column2, ..... columnN  
FROM table_name  
WHERE [search_condition]  
ORDER BY sort_expression

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

如果我们使用AND&OR运算符,则where子句可以是布尔表达式或一组布尔表达式。该子句必须评估为真,假或未知

WHERE条件适用于以下格式:

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

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

WHERE条件可以用逻辑和运算符被使用,如示于下表:

Different Operators Description
AND Logical operator AND
OR Logical operator OR
= Equal
> Greater than
< Less than
<> or != Not equal
>= Greater than or equal
<= Less than or equal
IN The IN operator will return true if a value matches any value in a list
LIKE The LIKE operator is used to return true if a value matches a pattern
BETWEEN The BETWEEN operator is used to return true if a value is between a range of values
NOT Negate the result of other operators
IS NULL It is used to return true if a value is NULL.

PostgreSQL WHERE条件的示例

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

为此,我们将使用在PostgreSQL教程的前面部分中创建的Employee表。

下面的屏幕快照定义了Employee表中存在的不同列:

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

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

在下面的示例中,我们将使用And逻辑运算符组合employee表中的两个布尔表达式,以查找first_name为Mia和last_nameSmith

SELECT first_name, last_name
FROM 
employee
WHERE 
first_name = 'Mia' AND last_name = 'Smith';

输出量

执行完以上命令后,我们将得到以下输出:

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

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

SELECT first_name,last_name
FROM employee
WHERE last_name = 'smith';

输出量

执行完上述命令后,我们将获得以下输出,该输出将提取最后一个_name等于smith的两个记录。

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

在下面的示例中,我们将在employee表中使用OR逻辑运算符first_name标识为Meganlast_name标识为Will

SELECT first_name, last_name
FROM 
employee
WHERE 
first_name = 'megan' OR last_name = 'will';

输出量

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

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

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

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

SELECT first_name,last_name
FROM employee
WHERE last_name LIKE 'smi%';

输出量

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


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

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

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

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

SELECT first_name,last_name
FROM employee
WHERE last_name IN ('smi','smith');

输出量

一旦执行了以上命令,我们将获得以下输出:

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

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

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

SELECT last_name, LENGTH(last_name) name_length
FROM employee
WHERE last_name LIKE '%ith' AND LENGTH(last_name) BETWEEN 2 AND 6
ORDER BY name_length;

输出量

一旦执行了上面的命令,我们将获得以下输出,上面的查询将获取与ith字符串匹配的两条记录,并且名称长度2到6之间。

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

在下面的示例中,我们将使用不等于<>运算符来标识地址New字符串开头且first_name不等于Olivia的那些雇员

SELECT first_name, last_name, address
FROM employee
WHERE address LIKE 'New%' AND first_name <> 'Olivia';

输出量

一旦执行了上面的命令,我们将获得以下输出,查询将获取地址New字符串匹配的两个记录,并且first_name不等于Olivia


注:我们可以同时使用<>运算符和=运算符,因为它们是类似的,因为我们可以在下面的命令来查看!

SELECT first_name, last_name, address
FROM employee
WHERE address LIKE 'New%' AND first_name <> 'John';

输出量

执行完上述命令后,我们将获得以下输出,查询将获取地址以新字符串开头且first_name不等于John的一条记录。