MySQL - OR演算子

こんにちは、データベースの愛好家候補の皆さん!今日は、MySQLの素晴らしい世界に飛び込み、最も役立つ論理演算子の一つであるOR演算子について探求します。このチュートリアルの終わりまでに、OR演算子をプロのように使用できるようになり、データベースクエリの新しい可能性を開くことになります。では、始めましょう!

MySQL - OR Operator

MySQL OR演算子

MySQLのOR演算子は、クラブの親切なボーイッシュが言う、「ゲストリストに載っているか、秘密のパスワードを知っているかで入場可」というようなものです。これにより、私たちはSQLステートメントに複数の条件を組み合わせることができ、これらのいずれかの条件が真である場合、全体の結果も真になります。

基本的な構文は以下の通りです:

condition1 OR condition2 OR condition3 ...

各条件は、ブール値(trueまたはfalse)を返す有効なMySQL式でなければなりません。

WHERE句でのOR演算子

OR演算子は最も一般的にWHERE句とともにSELECT文で使用されます。簡単な例を見てみましょう:

想像していただきたいのですが、employeesという名前のテーブルがあり、idnamedepartmentsalaryというカラムがあります。IT部門に所属しているか、年収が$50,000を超えている全ての従業員を見つけたいとします。

SELECT * FROM employees
WHERE department = 'IT' OR salary > 50000;

このクエリは、departmentが'IT'であるか、salaryが50,000を超えている、または両方の条件がtrueである全ての行を返します。

以下に分解します:

  1. SELECT *:これはテーブルの全てのカラムを選択します。
  2. FROM employees:これはどのテーブルをクエリするかを指定します。
  3. WHERE department = 'IT' OR salary > 50000:これはOR演算子を使用した条件です。

IT部門に所属しているが年収が$50,000未満の従業員も含まれます。同様に、年収が$50,000を超えているがIT部門に所属していない従業員も含まれます。もちろん、IT部門に所属し年収が$50,000を超えている従業員も含まれます!

複数のOR演算子

さて、検索を拡張したいとします。IT部門に所属しているか、HR部門に所属しているか、年収が$50,000を超えている従業員を見つけたいとします。複数のOR演算子を使用します:

SELECT * FROM employees
WHERE department = 'IT' OR department = 'HR' OR salary > 50000;

このクエリは、これらの3つの条件のいずれかを満たす従業員を返します。これは、「これらのいずれかの基準に該当する全ての人を教えてください」と言うようなものです。

覚えておきたいのは、OR条件を追加するほど、結果がinclusive(包含的)になるということです。データの海でより広範囲に網を投げるようなものです!

UPDATE句でのOR演算子

OR演算子はSELECT文だけでなく、UPDATE文でも使用できます。例えば、IT部門に所属しているか、年収が$30,000未満の全ての従業員にボーナスを支給したいとします:

UPDATE employees
SET bonus = 1000
WHERE department = 'IT' OR salary < 30000;

このクエリは、IT部門に所属している人、年収が$30,000未満の人、そしてもちろん、IT部門に所属し年収が$30,000未満の人に$1000のボーナスを追加します。

DELETE句でのOR演算子

また、OR演算子はDELETE句でも使用できます。例えば、'Temp'部門に所属しているか、6ヶ月以上活動していない全ての従業員を削除したいとします:

DELETE FROM employees
WHERE department = 'Temp' OR last_active_date < DATE_SUB(CURDATE(), INTERVAL 6 MONTH);

このクエリは、'Temp'部門に所属している人や、過去6ヶ月間活動していない人を削除します。DELETE句は注意深く使用してください。実行する前に必ず条件を確認してください!

クライアントプログラムでのOR演算子

MySQLコマンドラインツールのようなクライアントプログラムを使用する際、OR演算子は少し異なる方法で使用されることがあります。以下はその例です:

mysql> SELECT * FROM employees WHERE department = 'IT' OR salary > 50000\G

末尾の\Gは、MySQL特有のコマンドで、結果を縦に表示するため、幅の広いテーブルの読み取りが容易になります。

以下に、OR演算子の使用方法をまとめた表を示します:

操作
SELECT SELECT * FROM employees WHERE department = 'IT' OR salary > 50000;
UPDATE UPDATE employees SET bonus = 1000 WHERE department = 'IT' OR salary < 30000;
DELETE DELETE FROM employees WHERE department = 'Temp' OR last_active_date < DATE_SUB(CURDATE(), INTERVAL 6 MONTH);

OR演算子は、SQLクエリの「どちらか」というフレンドリーな存在です。これにより、データベース操作に柔軟性が生まれ、データの検索や操作においてより広範囲に網を投げることができます。

このまとめを締めくくるにあたり、私の指導経験からの小さな話を共有したいと思います。ある生徒がOR演算子に苦しみ、ORをANDと間違えて、ORは結果を少なくするものと思っていました。そこで私は彼に言いました、「ORをパーティーのホストのように考えなさい。ORで条件を追加するほど、パーティーに招待される人は増えます!」その言葉を聞いて彼は理解を示し、その日以降、ORとANDを混同することは再也没有りました。

異なるシナリオでOR演算子を使用する練習を続けると、データベースの魔法使いのように扱えるようになります!快適なクエリライフを送り、データが整理されていて簡単にアクセスできることを祈っています!

Credits: Image by storyset