この記事では、SQL に関する関連知識を提供します。主にテーブル接続に関する関連コンテンツを紹介します。SQL Server は、内部結合、左結合、右結合を含む複数の接続をサポートしています。結合、クロス結合、完全外部結合、一緒に見てみましょう。皆さんのお役に立てれば幸いです。
推奨学習: 「SQL チュートリアル 」
リレーショナル データベースでは、データが分散されます。複数の論理テーブルにわたって。完全で意味のあるデータ セットを取得するには、結合を使用してこれらのテーブル内のデータをクエリする必要があります。 SQL Server は、内部結合、左結合、右結合、クロス結合、完全外部結合などのさまざまな接続をサポートしています。
1. 内部結合
内部結合句は、2 つ以上の関連テーブルのデータをクエリするために使用されます。 INNER JOIN 句の構文:
SELECT p.product_name, p.list_price ,c.category_nameFROM production.products p INNER JOIN production.categories c ON c.category_id = p.category_id
注: クエリするフィールドの前には、次のようにテーブル名またはテーブル エイリアスを付ける必要があります。 p.product_name
FROM の後のテーブルがメイン テーブルです。の場合、INNER JOIN に続くテーブルが接続されるテーブルになります。メインテーブルと結合テーブルを比較して、条件を満たすすべての行を検索します。接続述語の計算結果が true の場合、次の図に示すように、メイン テーブルと接続テーブルが新しい結果セットにマージされます。以下に示すように、Connection 内で接続されたテーブル:
SELECT p.product_name, p.list_price ,c.category_name, b.brand_nameFROM production.products p INNER JOIN production.categories c ON c.category_id = p.category_id INNER JOIN production.brands b ON b.brand_id = p.brand_id2. 左側の接続
左側の接続で LEFT JOIN 句を使用してクエリを実行します。複数のテーブル データがある場合、左側のテーブルのすべての行と、右側のテーブルの一致する行が返されます。右のテーブルに一致する行が見つからない場合は、図に示すように、代わりに NULL を使用して表示します。
LEFT JOIN ステートメントを使用して接続します。以下に示します。
SELECT p.product_name, p.list_price ,c.category_nameFROM production.products p LEFT JOIN production.categories c ON c.category_id = p.category_id
上記の構文では、FROM に続くテーブルが左側のテーブル (production.products) であり、LEFT JOIN の直後にある右側のテーブル (production.categories) です。
3. 右結合右結合で RIGHT JOIN 句を使用して、2 つ以上のテーブルをクエリします。右のクエリは、左のクエリの逆です。右のテーブルのすべての行と、左のテーブルの一致する行が返されます。左のテーブルに一致する行が見つからない場合は、次に示すように、表示ではなく NULL が返されます。図内:
以下に示すように、RIGHT JOIN ステートメントを使用して接続します:
SELECT p.product_name, p.list_price ,c.category_nameFROM production.products p RIGHT JOIN production.categories c ON c.category_id = p.category_id
上記の構文では、FROM に続くテーブルが左側です。テーブル (production.products) とその直後のテーブル RIGHT JOIN 右のテーブル (production.categories) に従います。
4. クロス結合CROSS JOIN は、2 つ以上の無関係なテーブルを結合します。 2 つのテーブル間の CROSS JOIN の構文は次のとおりです。書き方は SELECT T1.select_list
FROM T1 CROSS JOIN T2;
または
SELECT T1.select_list FROM T1, T2;CROSS JOIN の 2 つがあります。最初のテーブル (T1) の各行を 2 番目のテーブルと結合します。 table(T2の各行)が連結されます。つまり、クロス結合は 2 つのテーブルの行のデカルト積を返します。 INNER JOIN や LEFT JOIN とは異なり、クロス結合は結合されたテーブル間の関係を確立しません。
T1 テーブルに 1 、 2 および 3 の 3 つの行が含まれ、T2 テーブルに A 、 B および C の 3 つの行が含まれているとします。 CROSS JOIN は、最初のテーブル (T1) から行を取得し、2 番目のテーブル (T2) の各行に新しい行を作成します。次に、最初のテーブル (T1) の次の行に対して同じことが行われ、以下同様に続きます。この図では、CROSS JOIN によって合計 9 行が作成されます。
5. 自己結合
自己結合は、テーブルをそれ自体 (同じテーブル) に接続するために使用されます。これは、階層データのクエリを実行したり、同じテーブル内の行を比較したりする場合に便利です。 自己結合は内部結合または左結合句を使用します。自己結合を使用するクエリは同じテーブルを参照するため、テーブル エイリアスを使用してクエリ内のテーブルに異なる名前を割り当てます。 注: テーブルの別名を使用せずにクエリ内で同じテーブルを複数回参照すると、エラーが発生します。 例:
SELECT t1.select_list FROM T1 t1INNER JOIN T1 t2 ON t1.category_id = t2.category_id
ここで INNER JOIN で他の句 (LEFT JOIN、RIGHT JOIN
FULL OUTER JOIN このコマンドは、左または右のテーブルに一致する行がある場合、すべての行を返します。図に示すように:
FULL OUTER JOIN を使用して、pm.projects テーブルと pm.member テーブルのデータをクエリします:
SELECT m.name member, p.title project FROM pm.members m FULL OUTER JOIN pm.projects p ON p.id = m.project_id;
pm。プロジェクト テーブル データ:
pm.member テーブル データ: クエリ結果:
推奨される学習: 「SQL チュートリアル 」
以上がSQL テーブル接続について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。