概要: このチュートリアルでは、SELECT ステートメントの WHERE
句でブール式を否定するために SQL NOT 演算子を使用する方法を学習します。
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 演算子を否定できます。たとえば、次のステートメントは、名(first name)が文字 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 演算子を使用してブール式を否定する方法がわかるはずです。