ホームページ  >  記事  >  データベース  >  SQL テーブル接続について話しましょう

SQL テーブル接続について話しましょう

WBOY
WBOY転載
2022-06-15 11:55:282175ブラウズ

この記事では、SQL に関する関連知識を提供します。主にテーブル接続に関する関連コンテンツを紹介します。SQL Server は、内部結合、左結合、右結合を含む複数の接続をサポートしています。結合、クロス結合、完全外部結合、一緒に見てみましょう。皆さんのお役に立てれば幸いです。

SQL テーブル接続について話しましょう

推奨学習: 「SQL チュートリアル

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_id

SQL テーブル接続について話しましょう

2. 左側の接続

左側の接続で 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) です。 SQL テーブル接続について話しましょう

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) に従います。 SQL テーブル接続について話しましょう

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


6 など) を使用できます。完全外部結合

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。プロジェクト テーブル データ: SQL テーブル接続について話しましょう

pm.member テーブル データ:

SQL テーブル接続について話しましょう

クエリ結果:
SQL テーブル接続について話しましょう

推奨される学習: 「SQL チュートリアル

以上がSQL テーブル接続について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。