エンジニア初心者の投稿であるため、間違っている箇所が多くあるかと思います。
何かお気づきの点がありましたらご教授いただけると幸いです。
はじめに
MYSQLにある内部結合と外部結合。この2つの結合の違いが学んだ瞬間は理解できているが、少し時間が経つとそれぞれの結合の特徴や使い方がわからなくなってしまいます。今回、記事に書いてまとめることでアウトプットできたらいいなと思い、残させていただきます。
内部結合・外部結合とは
内部結合・外部結合についての説明はこの記事がすごくわかりやすかったのでおすすめです。それぞれの結合の詳細を知りたい方は確認してみてください。
内部結合・外部結合以外にも結合の種類があります。
内部結合
2つのテーブルを結合させて、1つのテーブルとして表示する方法です。
両方のテーブルで合体が可能なデータのみを取り出す。
外部結合
左外部結合
2つのテーブルを結合させて、1つのテーブルとして表示する方法です。
1つ目のテーブルを基準にして、それに2つ目のテーブルを合体していく。
右外部結合
2つのテーブルを結合させて、1つのテーブルとして表示する方法です。
2つ目のテーブルを基準にして、それを1つ目のテーブルを合体していく。
内部結合・外部結合早見表
文字で書くだけだと分かりづらいので実際に表を使ったそれぞれの違いを確認します。
結合では大きさカラムをもとにして結合を行います。
ポケモンテーブル [ テーブル1 ]
名前 | 大きさ |
---|---|
ピカチュウ | 小さい |
イワーク | ちょっと大きい |
リザードン | 大きい |
大きさ別特徴(偏見) [ テーブル2 ]
大きさ | 特徴 |
---|---|
小さい | キュート |
大きい | エレガント |
ちょっと小さい | クール |
内部結合の場合
内部結合では2つのテーブルで大きさカラムが一致したもののみを結合して表示する。
SELECT
【テーブル1】.【大きさ】,
【テーブル1】.【名前】,
【テーブル2】.【特徴】
FROM
【テーブル1】
INNER JOIN
【テーブル2】
ON
【テーブル1】.【大きさ】 = 【テーブル2】.【大きさ】
大きさ | 名前 | 特徴 |
---|---|---|
小さい | ピカチュウ | キュート |
大きい | リザードン | エレガント |
左外部結合の場合
1つ目のテーブルを基準にして結合する。1つ目の大きさカラムが2つ目の大きさカラムにない場合は「NULL」と表示される。
SELECT
【テーブル1】.【大きさ】,
【テーブル1】.【名前】,
【テーブル2】.【特徴】
FROM
【テーブル1】
LEFT OUTER JOIN
【テーブル2】
ON
【テーブル1】.【大きさ】 = 【テーブル2】.【大きさ】
大きさ | 名前 | 特徴 |
---|---|---|
小さい | ピカチュウ | キュート |
ちょっと大きい | イワーク | NULL |
大きい | リザードン | エレガント |
右外部結合の場合
2つ目のテーブルを基準にして結合する。2つ目の大きさカラムが1つ目の大きさカラムにない場合は「NULL」と表示される。
SELECT
【テーブル2】.【大きさ】,
【テーブル1】.【名前】,
【テーブル2】.【特徴】
FROM
【テーブル1】
RIGHT OUTER JOIN
【テーブル2】
ON
【テーブル1】.【大きさ】 = 【テーブル2】.【大きさ】
大きさ | 名前 | 特徴 |
---|---|---|
小さい | ピカチュウ | キュート |
大きい | リザードン | エレガント |
ちょっと小さい | NULL | クール |
おわりに
内部結合と外部結合について見てきました。早見表を作ったことによって、内部結合と外部結合の違いを素早く復習できるので、作って満足しています。結合は種類によって全く違うものを表示するので効果的に結合を使えるように日々思考錯誤したいと思います。
参考文献