SQL - EXCEPT演算子:初心者向けの包括ガイド

こんにちは、SQLに興味を持つ皆さん!今日は、特にEXCEPT演算子に焦点を当てて、SQLの世界に一起に飛び込みます。プログラミングの初心者でも安心してください-私はあなたの親切なガイドとして、ステップバイステップですべてを説明します。では、始めましょう!

SQL - EXCEPT Operator

SQL EXCEPT演算子

EXCEPT演算子とは?

EXCEPT演算子は、SQLにおける魔法の杖のように、2つの結果セットを比較し、最初のセットに存在していて2番目のセットに存在しないユニークな行を返すのに使用されます。2つのグループのものの違いを見つけるようなものです。

例えば、果物のバスケットが2つあるとします。最初のバスケットにはりんご、オレンジ、バナナがあります。2番目のバスケットにはオレンジと梨があります。EXCEPT演算子を使用すると、りんごとバナナ-最初のバスケットにあるが2番目のバスケットにない果物-だけが残ります。

基本的な構文

以下は、EXCEPT文をどのように書くかの例です:

SELECT column1, column2, ...
FROM table1
EXCEPT
SELECT column1, column2, ...
FROM table2;

シンプルな例

例えば、employeesテーブルとmanagersテーブルの2つがあります。マネージャーでないすべての従業員を見つめたいとします。

SELECT employee_id, name
FROM employees
EXCEPT
SELECT employee_id, name
FROM managers;

このクエリは、マネージャーテーブルにないすべての従業員を返します。すごいですね?

EXCEPTとBETWEEN演算子の組み合わせ

さあ、EXCEPTにBETWEEN演算子を組み合わせて少しスパイスを加えましょう。BETWEEN演算子は、指定された範囲内の値を選択するのに使用されます。

例:高齢者でない従業員

例えば、高齢者(50~65歳)でない従業員を見つめたいとします。

SELECT employee_id, name, age
FROM employees
EXCEPT
SELECT employee_id, name, age
FROM employees
WHERE age BETWEEN 50 AND 65;

このクエリは、50歳から65歳の範囲にいないすべての従業員を返します。会社の若手と超高龄者が見つかります!

EXCEPTとIN演算子の組み合わせ

IN演算子は、WHERE句で複数の値を指定するのに使用されます。EXCEPTと組み合わせると、非常に強力になります。

例:特定の部署に所属していない従業員

例えば、IT、HR、またはファイナンス部署に所属していない従業員を見つめたいとします。

SELECT employee_id, name, department
FROM employees
EXCEPT
SELECT employee_id, name, department
FROM employees
WHERE department IN ('IT', 'HR', 'Finance');

このクエリは、IT、HR、およびファイナンス部署以外で働いているすべての従業員を返します。会社のユニークな雪片を見つけるようなものです!

EXCEPTとLIKE演算子の組み合わせ

LIKE演算子は、WHERE句で指定されたパターンをカラム内で検索するのに使用されます。EXCEPTと組み合わせると、非常に便利なことができます。

例:職種に'Manager'が含まれていない従業員

例えば、職種に'Manager'という単語が含まれていないすべての従業員を見つめたいとします。

SELECT employee_id, name, job_title
FROM employees
EXCEPT
SELECT employee_id, name, job_title
FROM employees
WHERE job_title LIKE '%Manager%';

このクエリは、職種に'Manager'が含まれていないすべての従業員を返します。会社の労働者蜜蜂を見つけるようなものです!

すべてを組み合わせる

これらの異なる演算子について学んだので、もっと複雑な例で組み合わせてみましょう。

例:複雑な従業員クエリ

以下の条件を満たすすべての従業員を見つめたいとします:

  1. マネージャーでない
  2. 25~40歳の範囲にいる
  3. ITまたはHR部署で働いていない
  4. 職種に'Specialist'が含まれていない
SELECT employee_id, name, age, department, job_title
FROM employees
EXCEPT
SELECT employee_id, name, age, department, job_title
FROM employees
WHERE employee_id IN (SELECT employee_id FROM managers)
OR age NOT BETWEEN 25 AND 40
OR department IN ('IT', 'HR')
OR job_title LIKE '%Specialist%';

このクエリは最初は脅威のように見えるかもしれませんが、分解すると、学んだ概念をすべて組み合わせただけです!

一般的なEXCEPTメソッド

以下の表は、私たちが議論した方法を要約しています:

メソッド 説明
基本的なEXCEPT 最初のセットに存在していて2番目のセットに存在しない行を見つける SELECT * FROM A EXCEPT SELECT * FROM B
EXCEPTとBETWEEN 指定された範囲内の行を除く ... EXCEPT ... WHERE col BETWEEN x AND y
EXCEPTとIN 指定された値に一致する行を除く ... EXCEPT ... WHERE col IN (a, b, c)
EXCEPTとLIKE 指定されたパターンに一致する行を除く ... EXCEPT ... WHERE col LIKE '%pattern%'

練習が完璧を生む!これらの演算子を使用して自分自身のクエリを書いてみてください。間違うことを恐れずに-それが私たちが学び成長する方法です。

このガイドがEXCEPT演算子とその仲間を理解するのに役立ったことを願っています。SQLは最初は難しいように見えるかもしれませんが、時間と練習を積めば、プロのように複雑なクエリを書けるようになります。コードを続け、好奇心を持ち、最も重要なのは、SQLを楽しむことです!

Credits: Image by storyset