DBMSの結合:THETA、内部結合、外部結合、等結合の種類
⚡ スマートサマリー
DBMSにおける結合(JOIN)は、2つ以上のテーブルの行を主キーと外部キーを使用して結合する二項演算です。結合は、一致する行のみを返す内部結合と、一致しない行を保持し、欠落部分をNULLで埋める外部結合に分けられます。

DBMSにおける結合(JOIN)とは何ですか?
DBMSに参加する は、結合結果と選択を単一のステートメントで組み合わせることができるバイナリ操作です。結合条件を作成する目的は、2 つ以上のテーブルのデータを結合することです。テーブルは主キーと選択を使用して関連付けられます。 外部キー.
結合の種類
DBMS には主に XNUMX 種類の結合があります。
- 内部結合: Theta、Natural、EQUI
- 外側のジョイント: 左、右、全体
以下の表は、すべての結合タイプを概説した後、それぞれを例とともに説明します。
| 加入団体 | 返品 | 一致しない行 |
|---|---|---|
| インナー(シータ/エクイ/ナチュラル) | 両方のテーブルで条件に一致する行 | ドロップされた |
| 左外側 | 左側のすべての行とマッチ | 左側は保持、右側は無効 |
| 右外側 | 右側の行とマッチ | 右側は保持され、左側は無効です。 |
| フルアウター | 両方のテーブルのすべての行 | 両方から保持され、欠落している場合はnull |
内部結合
内部結合 これは、指定された条件を満たす行を両方のテーブルから返すために使用されます。最も広く使用されている結合操作であり、デフォルトの結合タイプと考えることができます。
内部結合(または等価結合)は、結合述語で等価比較を使用する比較演算子ベースの結合です。ただし、「>」などの他の比較演算子を使用すると、等価結合とは呼ばれません。内部結合はさらに次の3つのサブタイプに分類されます。
- シータ参加
- 自然結合
- EQUI結合
シータ結合
シータ結合 シータで表される条件に基づいて 2 つのテーブルを結合できます。シータ結合は、すべての比較演算子で機能します。記号で表されます。 θJOIN操作の一般的なケースは、シータ結合と呼ばれます。
構文:
A ⋈θ B
シータ結合では、選択基準に任意の条件を使用できます。
次の表を検討してください。
| 表A | 表B | |||
|---|---|---|---|---|
| 列1 | 列2 | 列1 | 列2 | |
| 1 | 1 | 1 | 1 | |
| 1 | 2 | 1 | 3 | |
具体的な例を挙げますと、以下の通りです。
A ⋈ A.column 2 > B.column 2 (B)
| A ⋈ A.列 2 > B.列 2 (B) | |
|---|---|
| 列1 | 列2 |
| 1 | 2 |
EQUI結合
EQUI結合 は、シータ結合が同値条件のみを使用する場合に実行されます。EQUI結合は、効率的に実装するのが最も難しい操作です。 RDBMSそして、これはRDBMSのパフォーマンス問題の原因の一つです。
具体的な例を挙げますと、以下の通りです。
A ⋈ A.column 2 = B.column 2 (B)
| A ⋈ A.列 2 = B.列 2 (B) | |
|---|---|
| 列1 | 列2 |
| 1 | 1 |
自然結合 (⋈)
自然結合 比較演算子は使用しません。このタイプの結合では、属性は同じ名前とドメインを持つ必要があります。自然結合では、2つのリレーション間に少なくとも1つの共通属性が存在する必要があります。
これは、両方のリレーションに存在する属性に対して等価性を形成する選択を行い、重複する属性を削除します。
例: 以下の2つの表を検討してください。
| C | |
|---|---|
| で | 正方形である |
| 2 | 4 |
| 3 | 9 |
| D | |
|---|---|
| で | キューブ |
| 2 | 8 |
| 3 | 18 |
C ⋈ D
| C⋈D | ||
|---|---|---|
| で | 正方形である | キューブ |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
アウタージョイン
An アウタージョイン 結合された2つのテーブルの各レコードに、対応するレコードが存在する必要はありません。このタイプの結合では、他の対応するレコードが存在しない場合でも、テーブルは各レコードを保持します。外部結合には次の3つのタイプがあります。
- 左外部結合
- 右外部結合
- 完全外部結合
左外部結合 (A ⟕ B)
左外部結合 左側のテーブルからすべての行を返します。右側のテーブルに一致する行が見つからない場合でも同様です。右側のテーブルに一致するレコードが見つからない場合は、nullが返されます。
以下の2つの表を考えてみましょう。
| A | |
|---|---|
| で | 正方形である |
| 2 | 4 |
| 3 | 9 |
| 4 | 16 |
| B | |
|---|---|
| で | キューブ |
| 2 | 8 |
| 3 | 18 |
| 5 | 75 |
AB
| A ⟕ B | ||
|---|---|---|
| で | 正方形である | キューブ |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | – |
右外側結合 (A ⟖ B)
右外部結合 右外部結合は、左テーブルに一致する行が見つからない場合でも、右テーブルのすべての列を返します。左テーブルに一致する行が見つからない場合は、nullが返されます。右外部結合は、左外部結合の逆です。
AB
| A ⟖ B | ||
|---|---|---|
| で | キューブ | 正方形である |
| 2 | 8 | 4 |
| 3 | 18 | 9 |
| 5 | 75 | – |
完全外部結合(A ⟗ B)
で 完全外部結合の場合、一致条件に関係なく、両方のリレーションのすべてのタプルが結果に含まれます。
例:
AB
| A ⟗ B | ||
|---|---|---|
| で | 正方形である | キューブ |
| 2 | 4 | 8 |
| 3 | 9 | 18 |
| 4 | 16 | – |
| 5 | – | 75 |


