SQL - NOT演算子
こんにちは、SQLに情熱を持ち合わせた皆さん!私は、NOT演算子の不思議な世界を案内するのをとても楽しみにしています。SQLを教えてきた年月の中で、この演算子をマスターすることでデータベースのクエリ技能が大幅に向上することを保証できます。それでは、一緒に見ていきましょう!
SQL NOT演算子
NOT演算子は、あなたのことをいつも否定するような友達のようです。これはSQLで条件を否定するために使用され、布尔表現の結果を逆転させます。NOTを使用すると、「この条件に一致しないすべてのものを教えてくれ」と言っているのと同じです。
まず、簡単な例から始めましょう。students
という名前のテーブルがあり、id
、name
、age
というカラムがあるとします。
SELECT * FROM students WHERE NOT age = 20;
このクエリは、20歳でないすべての学生を返します。まるで、「20歳の学生以外すべてを見せてくれ」と言っているようなものです。
もう一つの例を見てみましょう:
SELECT * FROM students WHERE NOT name = 'John';
これは、名前がJohnでないすべての学生を返します。Johnは、いつも外されていますね!
SQL NOT演算子とLIKE
さあ、NOTとLIKE演算子を組み合わせて少しスパイスを加えましょう。LIKEはパターンマッチングに使用され、NOTと組み合わせると、パターンに基づいて除外する強力なツールになります。
SELECT * FROM students WHERE name NOT LIKE 'A%';
このクエリは、名前が'A'で始まらないすべての学生を返します。まるで、「みんなを招待するが、名前がAで始まる人は除く!」と言っているようなものです(アンナとアレックス、ごめんなさい!)。
もう一つの楽しい例を見てみましょう:
SELECT * FROM students WHERE email NOT LIKE '%@gmail.com';
これは、Gmailを使用していないすべての学生を返します。もしかすると、珍しいメールプロバイダーを好むヒッピーな人たちかもしれません!
SQL NOT演算子とIN
IN演算子はWHERE句で複数の値を指定するために使用されます。NOTと組み合わせると、値のリストを除外することができます。
SELECT * FROM students WHERE age NOT IN (18, 19, 20);
このクエリは、18歳、19歳、20歳でないすべての学生を返します。まるで、「ティーンエイジャーと若い成年人以外すべてを見せてくれ」と言っているようなものです!
もう一つの例を見てみましょう:
SELECT * FROM courses WHERE department NOT IN ('Math', 'Physics', 'Chemistry');
これは、数学、物理学、化学の学科でないすべてのコースを返します。硬科学を避けたい人に最適です!
SQL NOT演算子とIS NULL
SQLにおけるNULL値は、缺失または未知の情報を表します。IS NULL演算子はNULL値をテストするために使用され、NOTと組み合わせるとNULLでない値を見つけるのに役立ちます。
SELECT * FROM students WHERE phone_number IS NOT NULL;
このクエリは、電話番号を提供したすべての学生を返します。まるで、「実際に電話をかけることができる学生全部を見せてくれ」と言っているようなものです!
もう一つの実用的な例を見てみましょう:
SELECT * FROM assignments WHERE submission_date IS NOT NULL;
これは、提出されたすべての課題を返します。サボリストはこの結果セットにはいません!
SQL NOT演算子とBETWEEN
BETWEEN演算子は、指定された範囲内の値を選択します。NOTと組み合わせると、その範囲外の値を選択します。
SELECT * FROM products WHERE price NOT BETWEEN 10 AND 20;
このクエリは、10未満または20を超えるすべての製品を返します。予算重視のショッピングと高級志向の人々に最適です!
もう一つの例を見てみましょう:
SELECT * FROM events WHERE event_date NOT BETWEEN '2023-01-01' AND '2023-12-31';
これは、2023年の年間を通じて行われないすべてのイベントを返します。タイムトラベラー、注意してください!
SQL NOT演算子とEXISTS
EXISTS演算子は、サブクエリ内のレコードの存在をテストするために使用されます。NOTと組み合わせると、サブクエリの条件を満たすレコードが存在しないことをチェックします。
SELECT * FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
この複雑なように見えるクエリは、実際には簡単なことをしています:订单を一切注文していないすべての顧客を返します。まるで、データベースの中のウィンドウショッパーを見つけているようなものです!
もう一つの例を見てみましょう:
SELECT * FROM employees e
WHERE NOT EXISTS (SELECT 1 FROM managers m WHERE m.employee_id = e.id);
これは、マネージャーでないすべての従業員を返します。あなたの組織の中の労働者を探すのに最適です!
これまで話ししたNOT演算子のすべての方法をまとめると、以下の表が便利です:
方法 | 説明 | 例 |
---|---|---|
NOTと基本比較 | 単純な条件を否定 | WHERE NOT age = 20 |
NOTとLIKE | パターンを除外 | WHERE name NOT LIKE 'A%' |
NOTとIN | 値のリストを除外 | WHERE age NOT IN (18, 19, 20) |
NOTとIS NULL | NULLでない値を見つける | WHERE phone_number IS NOT NULL |
NOTとBETWEEN | 範囲を除外 | WHERE price NOT BETWEEN 10 AND 20 |
NOTとEXISTS | サブクエリの不在をチェック | WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id) |
そして、皆さん!NOT演算子のすべてを探求しました。SQLにおいても、また人生においても、欲しくないものを知ることは欲しいものを知ることと同じに重要です。快くクエリを楽しんでくださいし、結果が常にNOT NULLでありますように!
Credits: Image by storyset