内部結合と外部結合

SQLでは、 結合を使用して、比較および結合(文字通り結合)し、データベース内の2つ以上のテーブルから特定のデータ行を返します。 内部結合はテーブルから一致するデータを見つけて返しますが、 外部結合はテーブルから一致するデータいくつかの異なるデータを見つけて返します。

内部結合

内部結合は、2つのテーブル間の共通性に焦点を当てています。 内部結合を使用する場合、比較される2つ(またはそれ以上)のテーブル間に少なくともいくつかの一致するデータが必要です。 内部結合は、一致または重複するデータのテーブルを検索します。 それを見つけると、内部結合は情報を結合して1つの新しいテーブルに返します。

内部結合の例

製品価格と数量という2つのテーブルの一般的なシナリオを考えてみましょう。 2つのテーブルの共通情報は製品名であるため、テーブルを結合する論理列です。 2つの表に共通する製品がいくつかあります。 他のテーブルは、テーブルの1つに固有であり、他のテーブルに一致しません。

製品の内部結合は、両方のテーブルに共通する製品のみに関する情報を返します。

外部結合

外部結合は、内部結合が返すものを含むレコード(または行)のセットを返しますが、他のテーブルで対応する一致が見つからない他の行も含みます。

外部結合には3つのタイプがあります。

  • 左外部結合(または左結合)
  • 右外部結合(または右結合)
  • 完全外部結合(または完全結合)

これらの各外部結合は、比較、結合、および返されるデータの部分を指します。 一部のデータは共有され、他のデータは共有されないため、このプロセスでヌルが生成されることがあります。

左外部結合

左外部結合は、表1のすべてのデータとすべての共有データ(つまり、ベン図の例の内部)を返しますが、右結合である表2の対応するデータのみを返します。

左結合の例

サンプルデータベースでは、「左」( 価格表)にオレンジとトマトの2つの製品があり、「右」(数量表)に対応するエントリはありません。 左結合では、これらの行は結果セットに含まれ、Quantity列がNULLになります。 結果の他の行は、内部結合と同じです。

右外部結合

右外部結合は、表2のデータとすべての共有データを返しますが、左結合である表1の対応するデータのみを返します。

右結合の例

左結合の例と同様に、右外部結合の出力には、内部結合のすべての行と、左側に一致するエントリがない「右」( 数量テーブル)の2つの行(ブロッコリーとスカッシュ)が含まれます。

完全外部結合

一般的なMySQLデータベース管理システムでサポートされていない完全外部結合または完全結合は、共有情報の有無に関係なく、2つ以上のテーブルのすべてのデータを結合して返します。 完全結合は、複数のテーブルではなく、指定されたすべての情報を1つのテーブルに単純に複製するものと考えてください。 一致するデータが欠落している場合、ヌルが生成されます。

これらは基本にすぎませんが、多くのことを結合で行うことができます。 他の結合を除外できる結合もあります!

内部結合と外部結合を説明するビデオ

このビデオでは、さまざまな種類の結合の違いについて説明します。 結合についての議論が始まる時点で開始するようにキューイングされます。

関連記事