1. ホーム
  2. sql

[解決済み】SQL JOINとさまざまな種類のJOIN

2022-04-05 06:06:10

質問

SQLとは JOIN また、どのような種類があるのでしょうか?

解決方法は?

とは何ですか? SQL JOIN ?

SQL JOIN は、2つ以上のデータベーステーブルからデータを取得するためのメソッドです。

どのような SQL JOIN s ?

は全部で5つあります。 JOIN s. それらは :

  1. JOIN or INNER JOIN
  2. OUTER JOIN

     2.1 LEFT OUTER JOIN or LEFT JOIN
     2.2 RIGHT OUTER JOIN or RIGHT JOIN
     2.3 FULL OUTER JOIN or FULL JOIN

  3. NATURAL JOIN
  4. CROSS JOIN
  5. SELF JOIN

1. JOIN または INNER JOIN :

このような JOIN の場合、両方のテーブルで条件に一致するすべてのレコードを取得し、両方のテーブルで条件に一致しないレコードは報告されません。

つまり INNER JOIN という一つの事実に基づいています。両方のテーブルで一致する項目だけがリストアップされるべきである。

なお JOIN を使用せず、他の JOIN キーワード(例えば INNER , OUTER , LEFT など)は INNER JOIN . 言い換えれば JOIN は に対する構文糖 INNER JOIN (を参照してください)。 JOINとINNER JOINの違い ).

2. OUTER JOIN :

OUTER JOIN を取得します。

どちらかです。 一方のテーブルのマッチした行と、もう一方のテーブルの全ての行。 または すべてのテーブルのすべての行 (一致するかどうかは関係ない)。

外部結合には、3つの種類があります。

2.1 LEFT OUTER JOINまたはLEFT JOIN

この結合は、左側のテーブルのすべての行を、一致する行と組み合わせて返します。 右のテーブル。右のテーブルに一致するカラムがない場合、それは NULL の値です。

2.2 RIGHT OUTER JOIN または RIGHT JOIN

これは JOIN は、右側のテーブルのすべての行と、それに対応する右側のテーブルの行を返します。 左のテーブル。もし左のテーブルに一致する列がなければ、それは NULL の値を指定します。

2.3 FULL OUTER JOIN または FULL JOIN

これは JOIN を組み合わせています。 LEFT OUTER JOINRIGHT OUTER JOIN . 条件を満たしたときに、どちらかのテーブルから行を返し、さらに NULL の値を返す。

言い換えれば OUTER JOIN が基本です。テーブルの一方(RIGHTまたはLEFT)または両方(FULL)にマッチする項目のみがリストアップされるべきです。

Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.

3. NATURAL JOIN :

これは、2つの条件に基づいています。

  1. JOIN は、同じ名前を持つすべてのカラムに対して、等価性を保つために行われる。
  2. 結果から重複する列を削除します。

これは理論的なものであり、結果としてほとんどのDBMSがそうであると思われます。 は、わざわざこれをサポートする必要はない。

4. クロスジョイン(CROSS JOIN) :

関係する2つのテーブルのデカルト積である。の結果は CROSS JOIN は意味をなさない のような場合です。さらに、これはまったく必要ない(正確には、最低限必要)でしょう。

5. SELF JOIN :

の別形態ではありません。 JOIN であり、むしろ JOIN ( INNER , OUTER など)のテーブルを自分自身に置き換えます。

演算子によるJOIN

に使用される演算子によって JOIN 節には、2つのタイプがあります。 JOIN s. それらは

  1. Equi JOIN
  2. シータJOIN

1. Equi JOIN :

何であれ JOIN タイプ ( INNER , OUTER 等号演算子 (=) のみを使用する場合、以下のようになります。 その JOINEQUI JOIN .

2. シータ JOIN :

と同じです。 EQUI JOIN しかし、これは >, <, >= などの他のすべての演算子を許容します。

多くの人が EQUI JOIN とシータ JOIN と同様 INNER , OUTER その他 JOIN s. しかし、私はそれが間違いであると強く信じています。 が曖昧になる。なぜなら INNER JOIN , OUTER JOIN などは、すべて テーブルとそのデータに対して EQUI JOINTHETA JOIN は は、前者で使う演算子でつながっています。

ここでもまた、多くの人が NATURAL JOIN として、ある種の クオーツ。 EQUI JOIN . 実際、それは、最初の の条件として挙げた NATURAL JOIN . しかし に限定しています。 NATURAL JOIN のみである。 INNER JOIN s, OUTER JOIN s などは EQUI JOIN もあります。