最終更新日 2018/02/07
内部結合:共通部分だけをとってくる
左外部結合:左にあるものを全部とってくる
右外部結合:右にあるものを全部とってくる
完全外部結合:どちらかにあれば全部とってくる
内部結合(INNER JOIN)
「両方のテーブルにある行」のみを取り出して結合することを内部結合と言います。
例えば、
名前 | 年齢 |
Aさん | 20 |
Bさん | 30 |
Cさん | 40 |
名前 | 年収 |
Aさん | 300 |
Dさん | 600 |
という2つのテーブルを(名前列を使って)内部結合すると、
名前 | 年齢 | 年収 |
Aさん | 20 | 300 |
となります。「両方のテーブルにある行」はAさんだけだからです。
SQL文で書くと、
SELECT * FROM 表1 INNER JOIN 表2 ON 表1.名前 = 表2.名前
という感じになります。
SELECT * FROM 表1 INNER JOIN 表2 ON 表1.名前 = 表2.名前
という感じになります。
左外部結合(LEFT OUTER JOIN)
「1つ目のテーブルにある行」を全て取り出して結合することを左外部結合と言います。
例えば、
名前 | 年齢 |
Aさん | 20 |
Bさん | 30 |
Cさん | 40 |
名前 | 年収 |
Aさん | 300 |
Dさん | 600 |
という2つのテーブルを(名前列を使って)左外部結合すると、
名前 | 年齢 | 年収 |
Aさん | 20 | 300 |
Bさん | 30 | NULL |
Cさん | 40 | NULL |
となります。「1つ目のテーブルにある行」はAさん、Bさん、Cさんの3行だからです。Bさん、Cさんの年収は不明なのでNULLになります。
SQL文で書くと、
SELECT * FROM 表1 LEFT OUTER JOIN 表2 ON 表1.名前 = 表2.名前
という感じになります。
SELECT * FROM 表1 LEFT OUTER JOIN 表2 ON 表1.名前 = 表2.名前
という感じになります。
右外部結合(RIGHT OUTER JOIN)
「2つ目のテーブルにある行」を全て取り出して結合することを右外部結合と言います。
例えば、
名前 | 年齢 |
Aさん | 20 |
Bさん | 30 |
Cさん | 40 |
名前 | 年収 |
Aさん | 300 |
Dさん | 600 |
という2つのテーブルを(名前列を使って)右外部結合すると、
名前 | 年齢 | 年収 |
Aさん | 20 | 300 |
Dさん | NULL | 600 |
となります。「2つ目のテーブルにある行」はAさん、Dさんの2行だからです。Dさんの年齢は不明なのでNULLになります。
SQL文で書くと、
SELECT * FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.名前 = 表2.名前
という感じになります。
SELECT * FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.名前 = 表2.名前
という感じになります。
完全外部結合(FULL OUTER JOIN)
「1つ目のテーブルまたは2つ目のテーブルにある行」を全て取り出して結合することを完全外部結合と言います。
例えば、
名前 | 年齢 |
Aさん | 20 |
Bさん | 30 |
Cさん | 40 |
名前 | 年収 |
Aさん | 300 |
Dさん | 600 |
という2つのテーブルを(名前列を使って)完全外部結合すると、
名前 | 年齢 | 年収 |
Aさん | 20 | 300 |
Bさん | 30 | NULL |
Cさん | 40 | NULL |
Dさん | NULL | 600 |
となります。「1つ目のテーブルまたは2つ目のテーブルにある行」はAさん、Bさん、Cさん、Dさんの4行だからです。
SQL文で書くと、
SELECT * FROM 表1 FULL OUTER JOIN 表2 ON 表1.名前 = 表2.名前
という感じになります。
SELECT * FROM 表1 FULL OUTER JOIN 表2 ON 表1.名前 = 表2.名前
という感じになります。
交差結合(CROSS JOIN)
2つのテーブルの全組合せを取り出すような結合を交差結合と言います。
いわゆる直積と呼ばれるものです。他の4つとは性質が違います。例えば、
名前 | 年齢 |
Aさん | 20 |
Bさん | 30 |
Cさん | 40 |
名前 | 年収 |
Aさん | 300 |
Dさん | 600 |
という2つのテーブルを交差結合すると、
名前 | 年齢 | 名前 | 年収 |
Aさん | 20 | Aさん | 300 |
Bさん | 30 | Aさん | 300 |
Cさん | 40 | Aさん | 300 |
Aさん | 20 | Dさん | 600 |
Bさん | 30 | Dさん | 600 |
Cさん | 40 | Dさん | 600 |
となります。
SQL文で書くと、
SELECT * FROM 表1 CROSS JOIN 表2
という感じになります。
SELECT * FROM 表1 CROSS JOIN 表2
という感じになります。
次回は 最急降下法のイメージと例 を解説します。