SQLサブクエリの使用方法


必要条件


このチュートリアルに従って完全に理解するには、次のようにする必要があります.
  • Arctype
  • SQLの基礎知識
  • 副問い合わせとは


    副問い合わせは、別のSQLクエリにネストされたSQLクエリです.彼らは、Aの条件を作成する際にクエリを支援しますWHERE 行をフィルタリングして操作を行う節.副問い合わせはSELECT , INSERT , UPDATE , and DELETE 文.

    WHERE句における副問い合わせの例


    私たちは、1000ドルより大きいトランザクション量でデータベースにユーザーをフェッチしたいです.例では2つのテーブルがあります.users and transactions ユーザーとトランザクション情報を格納します.

    からのすべての行を取得するクエリを書くことができますtransactions 金額が1000ドル以上で、次に、それからの行を取得する別のクエリの条件として使用するテーブルusers テーブルは、最初のクエリの結果に基づいています.
    クエリは次のようになります.
    SELECT *
    FROM users
    WHERE id IN
        (SELECT user_id
         FROM transactions
         WHERE amount > 1000);
    

    副問い合わせの利点

  • サブクエリは、分離された部分にそれらを構造化することによって結合に対してクエリの読みやすさを改善します.
  • 簡単にサブクエリを理解し維持することは簡単です.
  • 副問い合わせは複雑な結合と組合を置き換えることができます.
  • サブクエリの欠点

  • 副問い合わせはテーブルを変更できず、同じSQLステートメント内の同じテーブルから選択できません.
  • 副問い合わせは高価な仕事であるので、結合操作を使うのはより速いです.
  • サブクエリの実行演習


    我々はいくつかの例を使用してArctype , ここで、サブクエリを公開し、それらがどのように構築され、アプリケーションで使用されるかを学びます.
    このチュートリアルで動作するデータベースを作成する必要があります.便宜のために私はGitHub Gist データベーススキーマを構築し、ダミーデータを挿入するSQLファイルが含まれます.これを使用するには、次の手順を実行する必要があります.
  • アークタイプを使用してデータベースに接続します
  • AtTypeのクエリタブに移動し、新しいクエリを作成する
  • ペーストして実行するcreate.sql file GISTからスキーマを作成する
  • クエリタブにもう一度移動して新しいクエリを作成します
  • ペーストして実行するinsert.sql file GISTからダミーデータをデータベースに入力します.

  • サブクエリによるデータの選択


    すべての行を選択するクエリを書きましょうBUYER 参照SKU_DATA 表.arctypeで新しいクエリを作成し、以下のコードを実行します
    SELECT *
    FROM BUYER
    WHERE BuyerName IN
        (SELECT BUYER
         FROM SKU_DATA);
    

    上のコードでは、BUYER 年代からのコラムSKU_DATA 次に、テーブルは、BUYER 同じテーブルBuyerName カラムの値.

    サブクエリによるデータの更新


    の値を増やすクエリを書きましょうPrice 列の中ORDER_ITEM 2016年に販売されたすべての商品につき10 %のテーブル.arctypeで新しいクエリを作成し、以下のコードを実行します
    UPDATE ORDER_ITEM
    SET Price=Price*1.1
    WHERE SKU IN
        (SELECT SKU
         FROM CATALOG_SKU_2016);
    
    

    上のコードでは、SKU 年代からのコラムCATALOG_SKU_2016 表を更新します.ORDER_ITEM 表.

    サブクエリによるデータの削除


    からのすべてのレコードを削除するサブクエリを書くつもりですINVENTORY テーブルは、130000平方フィート未満の倉庫に格納されます.クエリは次のようになります.
    DELETE
    FROM INVENTORY
    WHERE WarehouseID IN
        (SELECT WarehouseID
         FROM WAREHOUSE
         WHERE SquareFeet < 130000);
    

    ネストしたサブクエリの使用


    また、別のサブクエリ内のサブクエリを持つことも可能です.以下に例を示します:
    SELECT *
    FROM CATALOG_SKU_2017
    WHERE SKU IN
        (
            SELECT SKU
            FROM INVENTORY
            WHERE WarehouseID IN
            (
                SELECT WarehouseID
                FROM WAREHOUSE
                WHERE SquareFeet > 130000
            )
        );
    

    この例では、CATALOG_SKU_2017 平方フィートの倉庫に格納されているテーブルは30000以上.

    結論


    この記事では、クエリ内でクエリを実行する方法のサブクエリについて学びました.また、彼らはどのように動作し、彼らの利点と制限を学び、データを使用して例を実行Arctype .