SQL - IN演算子
こんにちは、SQLの愛好家たち!今日は、SQLのIN演算子の素晴らしい世界に飛び込んでみましょう。あなたの近所の親切なコンピュータ教師として、この旅を案内するのを楽しみにしています。プログラミングが初めての人も心配しないでください。基礎から始めて、少しずつ進んでいきます。お気に入りの飲み物を手に取り、リラックスして、始めましょう!
SQLのIN演算子
IN演算子は、排他的なクラブのVIPボーイのように振る舞います。値がリスト内のどれかと一致するかをチェックします。パーティーのゲストリストがあるとします。IN演算子は、誰かの名前がそのリストにあるかを素早く確認するのに役立ちます。
簡単な例で説明しましょう:
SELECT * FROM Customers
WHERE Country IN ('USA', 'UK', 'Canada');
このクエリでは、データベースにUSA、UK、またはCanadaから来たすべての顧客を表示するよう依頼しています。まるで、「Hey database, このクールな国々のクラブにいる顧客全部をくれ!」と言っているのと同じです。
IN演算子は、複数のOR条件を書く手間を省いてくれます:
SELECT * FROM Customers
WHERE Country = 'USA' OR Country = 'UK' OR Country = 'Canada';
INバージョンはどれだけきれいでしょうか?「私はりんごかオレンジかバナナが欲しい」と言うのと、「私はこれらの果物が欲しい」と言うのと同じです。
IN演算子とSELECT文
では、IN演算子をさまざまなSELECT文で使ってみましょう。オンラインストアのデータベースに「Products」テーブルがあるとします。
例1: 特定のカテゴリに属する商品を探す
SELECT ProductName, Price
FROM Products
WHERE Category IN ('Electronics', 'Books', 'Toys');
このクエリは、Electronics、Books、Toysカテゴリに属するすべての商品名と価格を取得します。まるで、「在庫管理者に、この3つの部署に何があるか、そしてそれらの価格はいくらか」と尋ねているのと同じです。
例2: 数値を使うIN
IN演算子はテキストだけでなく、数値にも非常に効果的です!
SELECT OrderID, OrderDate
FROM Orders
WHERE OrderID IN (10248, 10250, 10251);
ここでは、特定の注文IDに基づいて特定の注文を取得しています。まるで、書類 cabinetから特定のレシートを選び出しているのと同じです。
IN演算子とUPDATE文
IN演算子はSELECT文だけでなく、レコードを更新する際にも非常に便利です。
例: 複数の商品を一度に更新する
UPDATE Products
SET Price = Price * 1.1
WHERE Category IN ('Electronics', 'Computers');
このクエリは、ElectronicsとComputersカテゴリに属するすべての商品の価格を10%増加させます。まるで、ストアのすべてのテク-itemに一斉に給料を上げているのと同じです!
IN演算子とNOT
時々、特定のリストにないすべてのものを見つけたいすることがあります。その際に助かるのがNOT INです。
例: 特定の国々以外の顧客を見つける
SELECT CustomerName, Country
FROM Customers
WHERE Country NOT IN ('USA', 'UK', 'Canada');
このクエリは、USA、UK、またはCanadaから来たいないすべての顧客を見つけます。まるで、「私たちの北米と英国クラブに属していない顧客を全部見せてくれ」と言っているのと同じです。
IN演算子と列名
以下は、IN演算子を使ったcoolな技です。値を列と比較するために使えます!
例: 特定の顧客の注文を見つける
SELECT OrderID, CustomerID
FROM Orders
WHERE CustomerID IN (SELECT CustomerID FROM Customers WHERE Country = 'Germany');
このクエリは、ドイツの顧客によるすべての注文を見つけます。まるで、「私たちのドイツの友達による注文を全部見せてくれ」と言っているのと同じです。
サブクエリとIN演算子
IN演算子は、サブクエリと組み合わせることで非常に輝きます。サブクエリはクエリの中のクエリであり、SQLのinceptionとでも言えます!
例: 注文された商品を見つける
SELECT ProductName
FROM Products
WHERE ProductID IN (SELECT ProductID FROM OrderDetails);
このクエリは、少なくとも一度注文されたすべての商品を見つけます。まるで、「どの商品が実際に売れているか」を尋ねているのと同じです。
IN演算子の方法のまとめ
以下の表は、IN演算子を使ったさまざまな方法をまとめたものです。
方法 | 説明 | 例 |
---|---|---|
基本的なIN | 値がリスト内のどれかと一致するかをチェック | WHERE Country IN ('USA', 'UK', 'Canada') |
NOT IN | 値がリスト内のどれとも一致しないかをチェック | WHERE Country NOT IN ('USA', 'UK', 'Canada') |
サブクエリを使ったIN | サブクエリでリストを生成 | WHERE ProductID IN (SELECT ProductID FROM OrderDetails) |
列を使ったIN | 値を列と比較 | WHERE CustomerID IN (SELECT CustomerID FROM Customers WHERE Country = 'Germany') |
そして、ここまでがIN演算子の旅です。基本的なリストチェックから複雑なサブクエリまで、IN演算子はあなたのSQLツールキットの強力なツールです。練習は完璧を生みますので、自分のデータベースでこれらのクエリを試してみてください。
最後に、ある時のことを思い出します。難しいSQL概念を教えている際に、ある生徒が手を挙げて言いました。「わかった!ソックスを並べるのと同じで、青いソックスを素早く見つけることができます!」そして、彼女は正しかったのです。IN演算子はすべてが効率的に並べられ、チェックされることを意味します。
ですから、練習を続け、クエリを書き続け、そして最も重要なのは、SQLを学ぶプロセスを楽しむことです。それを続けるうちに、熟練したデータベースウィザードのように複雑なクエリを簡単に書けるようになるでしょう。次回まで、ハッピーコーディングを!
Credits: Image by storyset