【SQL】INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOINもう迷わない。JOINのイメージを掴もう!

【SQL】INNER JOIN, OUTER JOIN, LEFT JOIN, RIGHT JOINもう迷わない。JOINのイメージを掴もう!

はじめに

コジマです。

LEFT JOIN(左外部結合), RIGHT JOIN(右外部結合)調べてもどっちがどっちか忘れちゃう。
INNER JOIN(内部結合), OUTER JOIN(外部結合)結局何するんだっけ…?
って頭が混乱しちゃう人のために書きます。

自分もちょこちょこわからなくなる時がありました。

JOIN3大原則

これだけはまず覚えてください。
理解するのはこれらを覚えてからです。

1:テーブルは右にくっつく

JOINしたテーブルは右にくっつきます。
この感覚が超大事なので、とにかく覚えましょう。右にくっつく。

2:内部結合と外部結合の違いは「ぼっち」を葬るか生かすかの違い

以下のようなテーブルを考えます。
ユーザー情報を持つ「Users」テーブルと
ユーザーの持ち物の情報を持つ「Items」テーブルを考えます。

「Users」テーブルの「id」カラムと
「Items」テーブルの「userId」カラムを条件に結合することを考えてみます。

両方のテーブルに同じIDがあればレコードが横並びになりますが、
同じIDがない場合は相方がNULLになります。
このように相方がNULLになった状態を「ぼっち」と呼びます。
(「ぼっち」は私が勝手に呼んでるだけで、正式な呼び名ではありません。)

結論を申し上げると、
OUTER JOIN(外部結合)は「ぼっち」を生かします。
INNER JOIN(内部結合)は「ぼっち」を葬ります。

これらを踏まえて各JOINの動作を解説いたします。

各JOINを覚える

OUTER JOIN(外部結合)

まずは外部結合です。FULL OUTER JOINと書くこともあります。

外部結合は、両方のぼっちを生かします。

LEFT JOIN(左外部結合)

次に左外部結合です。LEFT OUTER JOINと書くこともあります。

左外部結合は、左側のぼっちを生かします。

RIGHT JOIN(右外部結合)

次に右外部結合です。RIGHT OUTER JOINと書くこともあります。

右外部結合は、右側のぼっちを生かします。

LEFT、RIGHTっていうのはどっちのぼっちを生かすかを示してるんですね。

INNER JOIN(内部結合)

次に内部結合です。単にJOINと書くこともあります。

内部結合は、両方のぼっちを葬ります。

小話

まとめの前に小話を少し。

LEFT JOINとRIGHT JOINどっちを使うべき?

原則に書いてある通り、テーブルは右側にくっついていきます。
それはすなわちSQLの書いた順にテーブルが並んでいくということなんですね。

LEFT JOINはぼっちを生かす優先順位が書いた順に並ぶので可読性が高いです。
RIGHT JOINはその逆のため、読みづらく開発現場では疎まれることが多いです。

LEFT JOINとRIGHT JOINどっち使おうか悩んだらLEFT JOINを使うことをお勧めします。

さいごに

ポイントをまとめます。

  • JOINしたテーブルは右にくっつく
  • INNER JOINは「ぼっち」を葬り、OUTER JOINは「ぼっち」を生かす
  • LEFT, RIGHTは生かす「ぼっち」を示している

自分なりにかみ砕いてJOINの話を書いてみました。
久々に頑張って書いたので、JOINに悩むSQLビギナーの助けになればと思います。

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

システムエンジニアのつらい部分のあるあるなんかをエンタメにしたチャンネルを作りました。
チャンネルはこちら
つらい部分も楽しくなればと思っているのでよかったらチャンネル登録や高評価してくれたらうれしいです。

もっと学びたい人はこちら

SQLをもっと学びたいエンジニアのためにおすすめのUdemy講座を紹介いたします!

SQLはじめましての人!まずあなたの3時間をください。
この講座でまずこれだけは覚えてくれ!という内容をしっかり押さえることができます。
SQLはプログラミング言語がなんであれ、システム開発に必要になります。
この講座を見て最低限必要な知識を身に着けて実践で貢献できるようになりましょう!
3時間で学ぶ SQL ・データベース 超入門【丁寧な解説+演習問題で SQL データ抽出の基本が身につく】標準 SQL

データベースの設計について学べる講座です。
設計について学べる教材は少ないので、実務でデータベースを触る人にはとてもうれしい講座です。
データベース講座1:データベース論理設計

ちょっとニッチに感じるかもしれませんが、SQLのインデックスを学ぶことができる講座です。
よい性能でSQLを運用するためにはインデックスの理解は必要不可欠です。
CRUD書いて満足するエンジニアを出し抜きましょう。
SQLServerのインデックスを理解して検索を速くする方法

気になった人はぜひ見てみてくださいね!

以上、コジマでした。


SQLカテゴリの最新記事