总结:在本教程中,你将学习如何使用 SQL NOT 运算符在 SELECT 语句的 `WHERE` 从句中否定布尔表达式。
SQL NOT 运算符介绍
你已经学习如何使用各种逻辑运算符例如 AND、OR、LIKE、BETWEEN、IN 以及 EXISTS。这些运算符帮助你在 WHERE 从句 中形成灵活的条件。
如需否定任何布尔表达式的结果,则使用 `NOT` 运算符。以下说明如何使用 `NOT` 运算符
NOT [Boolean_expression]
Code language: SQL (Structured Query Language) (sql)
下表显示 `NOT` 运算符的结果。
NOT | |
TRUE | FALSE |
FALSE | TRUE |
NULL | NULL |
SQL NOT 运算符示例
我们将使用 `employees` 表帮助你更好地理解 `NOT` 运算符。

以下语句检索在部门 ID 5 中工作的全体员工。
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
department_id = 5
ORDER BY
salary;
Code language: SQL (Structured Query Language) (sql)

如需得到在部门 ID 5 中工作且薪资不高于 5000 的员工。
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
department_id = 5
AND NOT salary > 5000
ORDER BY
salary;
Code language: SQL (Structured Query Language) (sql)

SQL NOT 与 IN 运算符示例
如需否定 IN 运算符,则使用 NOT 运算符。例如,以下语句得到所有不在部门 1、2 或 3 中工作的员工。
SELECT
employee_id,
first_name,
last_name,
department_id
FROM
employees
WHERE
department_id NOT IN (1, 2, 3)
ORDER BY
first_name;
Code language: SQL (Structured Query Language) (sql)

SQL NOT LIKE 运算符示例
你可以通过使用 NOT LIKE 来否定 LIKE 运算符。例如,以下语句检索所有并非以字母 D 开头的员工姓名。
SELECT
first_name,
last_name
FROM
employees
WHERE
first_name NOT LIKE 'D%'
ORDER BY
first_name;
Code language: SQL (Structured Query Language) (sql)

SQL NOT BETWEEN 示例
以下示例向你展示如何使用 NOT 否定 BETWEEN 运算符以获得薪资不在 5,000 至 1,000 之间的员工。
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
salary NOT BETWEEN 3000
AND 5000
ORDER BY
salary;
Code language: SQL (Structured Query Language) (sql)
SQL NOT EXISTS 示例
请参见以下 `employees` 和 `dependents` 表

以下查询使用 `NOT EXISTS` 运算符获得没有家属的员工。
SELECT
employee_id,
first_name,
last_name
FROM
employees e
WHERE
NOT EXISTS (
SELECT
employee_id
FROM
dependents d
WHERE
d.employee_id = e.employee_id
);
Code language: SQL (Structured Query Language) (sql)
现在你应当了解如何使用 NOT 运算符否定布尔表达式。
本教程有帮助吗?