比較表
比較基準 | 左外部結合 | 右外部結合 | フルアウタージョイン |
---|---|---|---|
基本 | 左側のテーブルのすべてのタプルは結果に残ります。 | 右側のテーブルのすべてのタプルが結果に残ります。 | 左と右のテーブルからのすべてのタプルが結果に残ります。 |
NULL拡張 | 右側のテーブルに一致するタプルがない左側のテーブルのタプルは、右側のテーブルの属性に対してNULL値で拡張されます。 | 左側のテーブルに一致するタプルがない右側のテーブルのタプルは、左側のテーブルの属性に対してNULL値で拡張されます。 | 左右のテーブルに一致するタプルがない左右のテーブルのタプルは、左右のテーブルの属性に対してNULL値で拡張されます。 |
左外部結合の定義
“ Table_A左外部結合Table_B ”があるとします。 したがって、 Table_Aは左外部 結合操作の左側に表示されるので、 Table_Aが左のテーブルで、 Table_Bが右のテーブルです。
最初に、 内部結合はTable_AとTable_Bに適用され、テーブルAとBから一致するすべてのタプルが返されます。
次に、Table_Bに一致するタプルがないTable_Aのすべてのタプルを返します。 そのため、結果のタプルは、右側のテーブルの属性に対してNULL値で埋められます。
したがって、左外部結合から取得した結果には、左側のテーブルのすべてのタプルと右側のテーブルの一致するタプルのみが保持されます。
例を挙げてLeft Outer Joinについて説明しましょう。 以下の2つのテーブル、 StudentテーブルとDepartmentテーブルがあります。
それでは、生徒と学科のテーブルに左外部結合を適用します。
選択* 学生の左外部結合部から
オン学生 Student_ID = Department.Student_ID
上記のクエリでは、テーブルStudentが左側のテーブルで、テーブルDepartmentが右側のテーブルです。 そのため、Left Outer Joinによると、結果にはStudentテーブルのすべてのタプルと、Departmentテーブルの一致するタプルのみが必要です。
右外部結合の定義
“ Table_A右外部結合Table_B ”があるとします。 したがって、 Table_AはRight Outer Join操作の左側に表示される左側のテーブルで、 Table_Bは右側のテーブルです。
左外部結合の場合と同様に、最初はTable_AとTable_Bに 内部結合が適用され、テーブルAとBから一致するすべてのタプルが返されます。
次に、Table_Aに一致するタプルがないTable_Bのすべてのタプルを返します。 その結果、結果として得られるタプルは、左側のテーブルの属性に対してNULL値で埋められます。
したがって、右側の外部結合から取得された結果には、右側のテーブルのすべてのタプルと左側のテーブルの一致するタプルのみが保持されます。
例を使ってRight Outer Joinについて説明しましょう。 上記の2つのテーブル、StudentテーブルとDepartmentテーブルがあります。
それでは、 Right Outer JoinをStudentテーブルとDepartmentテーブルに適用します。
* 学生の右の外の部門から選択してください
オン学生 Student_ID = Department.Student_ID
上記のクエリでは、Student Tableが左側のテーブルで、Department Tableが右側のテーブルです。 Right Outer Join操作によると、結果にはDepartmentテーブルのすべてのタプルとStudentテーブルの一致タプルのみが含まれている必要があります。
フル外部結合の定義
「 Table_A完全外部結合Table_B 」があるとします。 そのため、 Table_Aは、フル外部結合操作の左側に表示される左側のテーブルで、 Table_Bは右側のテーブルです。
完全外部結合は、 左外部結合と右外部結合の両方の組み合わせです。 最初に、 Table_AとTable_Bに内部結合を適用して、両方のテーブルから一致するタプルを取得します。 次に、Table_Bの一致タプルを持たないTable_AのタプルをNULLで拡張します 。 さらに、 Table_Aに一致するタプルがない、 Table_BからのタプルをNULLで拡張します 。
したがって、Full Outer Joinは、両方のテーブルの一致タプルと共に、左テーブルと右テーブルのすべてのタプルを保持します。
FULL Outer Joinについて例を挙げて説明しましょう。 上記の2つのテーブル、 StudentテーブルとDepartmentテーブルがあります。
それでは、Full Outer JoinをStudentテーブルとDepartmentテーブルに適用します。
選択* 生徒の全外部参加部門から
オン学生 Student_ID = Department.Student_ID
上記のクエリでは、Student Tableが左側のテーブルで、Department Tableが右側のテーブルです。 Full Outer Joinによると、結果には両方のテーブルのすべてのタプルが含まれている必要があります。
左、右および完全外部結合の主な違い
- 左外部結合の結果には、左テーブルのすべてのタプルがあります。 同様に、Right Outer Joinの結果には、右側のテーブルのすべてのタプルがあります。 そして、Full Outer Joinの結果には、左テーブルと右テーブルの両方からのすべてのタプルがあります。
- 左外部結合では、右テーブルに一致タプルがない左テーブルのタプルは、右テーブルの属性のNull値で拡張されます。 反対は、右外部結合の場合です。 また、Full Outer Joinでは、左右のテーブルに一致するタプルがない左右のテーブルのタプルは、それぞれ左右のテーブルの属性に対してNULLで拡張されます。
結論:
クエリ内のテーブル名の位置に注意してください。 クエリ内のテーブル名の位置によって、そのテーブルを左テーブルと見なすか右テーブルと見なすかが決まります。