推奨されます, 2019

エディターズチョイス

左、右および完全外部結合の違い

先に、内部結合と外部結合の違いについて説明しました。ここでは、外部結合の種類について概説しました。 外部結合は、結合操作中に失われたはずの結果のタプルを保持するものです。 記事上で; 外部結合の種類の違いについて説明します。 外部結合には3つのタイプがあります。 左外部結合、右外部結合、および完全外部結合。 左、右、および完全外部結合は、実行計画と得られる結果が異なります。 Left、Right、およびFull Outer Joinから外側の単語を省略できます。 以下の比較表を参考にして、Left、Right、Full outer Joinの違いを調べてみましょう。

比較表

比較基準左外部結合右外部結合フルアウタージョイン
基本左側のテーブルのすべてのタプルは結果に残ります。右側のテーブルのすべてのタプルが結果に残ります。左と右のテーブルからのすべてのタプルが結果に残ります。
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テーブルの一致するタプルのみが必要です。

左外部結合から得られた結果を観察してください。 StudentテーブルとDepartmentテーブルの両方から一致するタプルとともに、Studentテーブルのすべてのタプルがあります。 Jimmyのstudent_id、StudentテーブルのJoseph HarryがDepartmentテーブルに存在しませんでした。 したがって、Jimmy、Joseph HarryのDepartmentテーブルの属性値はNULLに拡張されています。

右外部結合の定義

Table_A右外部結合Table_B ”があるとします。 したがって、 Table_ARight Outer Join操作の左側に表示される左側のテーブルで、 Table_B右側のテーブルです。

左外部結合の場合と同様に、最初はTable_ATable_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テーブルの一致タプルのみが含まれている必要があります。

右外部結合から得られた結果を観察してください。 Departmentテーブルのすべてのタプルと、StudentテーブルとDepartmentテーブルの両方の対応するタプルがあります。 DepartmentテーブルのStudent_ID 10536および00954は、Studentテーブルには存在しません。 したがって、Student_ID 10536および00954のNameの属性値はNULLに拡張されます。

フル外部結合の定義

Table_A完全外部結合Table_B 」があるとします。 そのため、 Table_Aは、フル外部結合操作の左側に表示される左側のテーブルで、 Table_B右側のテーブルです。

完全外部結合は、 左外部結合右外部結合の両方の組み合わせです。 最初に、 Table_ATable_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によると、結果には両方のテーブルのすべてのタプルが含まれている必要があります。

完全外部結合から得られた結果を観察してください。 これには、StudentテーブルとDepartmentテーブルの両方の一致タプルとともに、StudentテーブルとDepartmentテーブルのすべてのタプルがあります。 Jimmyのstudent_id 、Joseph Harry、すなわち Studentテーブルのそれぞれ10026, 02256, 56362は、Departmentテーブルに存在しませんでした。 したがって、Jimmy、Joseph HarryのDepartmentテーブルの属性値はNULLに拡張されます 。DepartmentテーブルのStudent_ID 10536および00954は 、StudentテーブルのStudent_ID列には表示されません。 したがって、Student_ID 10536および00954のName属性の属性値はNULLに拡張されています

左、右および完全外部結合の主な違い

  1. 左外部結合の結果には、左テーブルのすべてのタプルがあります。 同様に、Right Outer Joinの結果には、右側のテーブルのすべてのタプルがあります。 そして、Full Outer Joinの結果には、左テーブルと右テーブルの両方からのすべてのタプルがあります。
  2. 左外部結合では、右テーブルに一致タプルがない左テーブルのタプルは、右テーブルの属性のNull値で拡張されます。 反対は、右外部結合の場合です。 また、Full Outer Joinでは、左右のテーブルに一致するタプルがない左右のテーブルのタプルは、それぞれ左右のテーブルの属性に対してNULLで拡張されます。

結論:

クエリ内のテーブル名の位置に注意してください。 クエリ内のテーブル名の位置によって、そのテーブルを左テーブルと見なすか右テーブルと見なすかが決まります。

Top