SQL 逻辑运算符

**摘要**:在本教程中,您将了解 SQL 逻辑运算符以及如何使用它们来测试条件的真假性。

逻辑运算符允许您测试条件的真假性。类似于 比较运算符,逻辑运算符返回真、假或未知的值。

下表说明了 SQL 逻辑运算符

运算符含义
ALL当所有比较都为真时返回真
AND当两个表达式都为真时返回真
ANY当任何一个比较为真时返回真。
BETWEEN当操作数在某个范围内时返回真
EXISTS当子查询包含任何行时返回真
IN当操作数等于列表中的一个值时返回真
LIKE当操作数与模式匹配时返回真
NOT反转任何其他布尔运算符的结果。
OR当任一表达式为真时返回真
SOME当一些表达式为真时返回真

AND

AND 运算符允许您在 SQL 语句的 WHERE 子句中构造多个条件,例如 SELECTUPDATEDELETE

expression1 AND expression2Code language: SQL (Structured Query Language) (sql)

AND 运算符当且仅当两个表达式都计算为真时,才会返回真。

以下示例查找所有工资大于 5,000 美元且小于 7,000 美元的员工

SELECT 
    first_name, last_name, salary
FROM
    employees
WHERE
    salary > 5000 AND salary < 7000
ORDER BY salary;Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - AND example

OR

类似于 AND 运算符,OR 运算符在 SQL 语句的 WHERE 子句中组合多个条件

expression1 OR expression2Code language: SQL (Structured Query Language) (sql)

但是,OR 运算符当至少一个表达式计算为真时返回真。

例如,以下语句查找工资为 7,000 美元或 8,000 美元的员工

SELECT 
    first_name, last_name, salary
FROM
    employees
WHERE
    salary = 7000 OR salary = 8000
ORDER BY salary;Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - OR example

IS NULL

IS NULL 运算符将一个值与空值进行比较,如果所比较的值为空,则返回真;否则,返回假。

例如,以下语句查找所有没有电话号码的员工

SELECT 
    first_name, last_name, phone_number
FROM
    employees
WHERE
    phone_number IS NULL
ORDER BY first_name , last_name;
Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - IS NULL example

BETWEEN

BETWEEN 运算符 根据给定的最小值和最大值搜索值,这些值属于某个值集。请注意,最小值和最大值被包括在条件集的一部分中。

例如,以下语句查找所有工资在 9,000 美元到 12,000 美元之间的员工。

SELECT 
    first_name, last_name, salary
FROM
    employees
WHERE
    salary BETWEEN 9000 AND 12000
ORDER BY salary;    
Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - BETWEEN example

请注意,值 9,000 美元和 12,000 美元都包含在输出中。

IN

IN 运算符将一个值与一个指定的值列表进行比较。IN 运算符当被比较的值至少与列表中的一个值匹配时返回真;否则,返回假。

以下语句查找所有在部门 ID 为 8 或 9 中工作的员工。

SELECT 
    first_name, last_name, department_id
FROM
    employees
WHERE
    department_id IN (8, 9)
ORDER BY department_id;
Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - IN example

LIKE

LIKE 运算符 使用通配符运算符将一个值与类似的值进行比较。SQL 提供了两个与 LIKE 运算符结合使用的通配符

  • 百分号 (%) 表示零、一个或多个字符。
  • 下划线符号 (_) 表示一个字符。

以下语句将找出名字首字母以字符串jo开头的所有人

SELECT 
    employee_id, first_name, last_name
FROM
    employees
WHERE
    first_name LIKE 'jo%'
ORDER BY first_name;
Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - LIKE example

以下示例将找出名字的第二个字符是  h的所有人

SELECT 
    employee_id, first_name, last_name
FROM
    employees
WHERE
    first_name LIKE '_h%'
ORDER BY first_name;
Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - LIKE example 2

ALL

ALL运算符将一个值与另一个值集中的所有值进行比较。ALL运算符必须紧跟一个比较运算符,然后是子查询

以下说明了ALL运算符的语法

comparison_operator ALL (subquery)
Code language: SQL (Structured Query Language) (sql)

请注意,您将在子查询教程中学习子查询

以下示例将找出薪水高于部门 8 中所有员工薪水的员工

SELECT 
    first_name, last_name, salary
FROM
    employees
WHERE
    salary >= ALL (SELECT 
            salary
        FROM
            employees
        WHERE
            department_id = 8)
ORDER BY salary DESC;Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - ALL example

ANY

ANY运算符根据以下所示的条件,将一个值与集合中的任何一个值进行比较

comparison_operator ANY(subquery)Code language: SQL (Structured Query Language) (sql)

类似于ALL运算符,ANY运算符必须紧跟一个比较运算符,然后是子查询

例如,以下语句将找出薪水高于每个部门平均水平的所有员工

SELECT 
    first_name, last_name, salary
FROM
    employees
WHERE
    salary > ANY(SELECT 
            AVG(salary)
        FROM
            employees
        GROUP BY department_id)
ORDER BY first_name , last_name; 
Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - SOME example

请注意,SOMEANY的别名,因此您可以互换使用。

EXISTS

EXISTS运算符测试子查询中是否包含任何行

EXISTS (subquery)Code language: SQL (Structured Query Language) (sql)

如果子查询返回一行或多行,则EXISTS的结果为真;否则,结果为假。

例如,以下语句将找出所有有抚养人的员工

SELECT 
    first_name, last_name
FROM
    employees e
WHERE
    EXISTS( SELECT 
            1
        FROM
            dependents d
        WHERE
            d.employee_id = e.employee_id);
Code language: SQL (Structured Query Language) (sql)
SQL Logical Operators - EXISTS example

现在,您应该对所有 SQL 逻辑运算符以及如何使用它们来检验条件的真假有了简要的概述。在接下来的教程中,您将详细了解每个逻辑运算符。

本教程是否有用?