SQL NOT

概要: このチュートリアルでは、SELECT ステートメントの WHERE 句でブール式を否定するために SQL NOT 演算子を使用する方法を学習します。

SQL NOT 演算子の概要

ANDORLIKEBETWEENINEXISTS などのさまざまな論理演算子の使用方法を学習しました。これらの演算子は、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 演算子をよりよく理解できるようにします。

employees_table

次のステートメントは、部門 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)

試してみる

SQL NOT operator example

部門 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 operator with greater than example

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 IN operator example

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 LIKE operator example

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 テーブルを参照してください。

employees_dependents_tables

次のクエリは、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 演算子を使用してブール式を否定する方法がわかるはずです。

このチュートリアルは役に立ちましたか?