LoginSignup
0
0

More than 1 year has passed since last update.

【SQL】INNER JOINとOUTER JOIN

Posted at

はじめに

 SQLでテーブル結合する際にはJOIN句を使いますが、それにはINNER JOINとOUTER JOINの2種類があります。OUTER JOINの方はあまり使ったことがなかったので、改めて勉強しなおしました。

INNER JOINとOUTER JOIN

 まずはじめに、テーブル結合について説明していきます。テーブル結合とは、データベースにある複数のテーブルを合体させて1つのテーブルとして扱うことです。例えば、このような2つのテーブルがあったとします。
とあるSNSのデータベースを想像してください。左がユーザー情報を保管するusersテーブル、右が投稿内容を保存するpostsテーブルです。
スクリーンショット 2021-11-08 6.50.29.png

↓これを合体させるとこのようになります。

スクリーンショット 2021-11-08 6.54.35.png

usersテーブルのidとpostsテーブルのuser_idが紐づいて、テーブルを合体させることができます。SQLではこのように書きます。

SELECT * 
FROM 
  users
  INNER JOIN posts
  ON users.id = posts.user_id;

こうするとユーザーの情報と投稿内容情報を一気にとってくることができます。この手法を、INNER JOINと言います。注意しなければならないのは、佐藤さんはまだ投稿をしていないので、postsテーブルにデータがありません。結合するテーブルにデータがない場合、結合後のテーブルではそのレコードがまるまる削除されてしまいます。postsにデータはないけれども佐藤さんのデータも取ってきたい場合はこのように書きます。

SELECT * 
FROM 
  users
  LEFT OUTER JOIN posts
  ON users.id = posts.user_id;

結果はこちらになります。

スクリーンショット 2021-11-08 7.05.34.png

LEFT OUTER JOINを使うことで佐藤さんのデータも取ってくることができます。ただし、postsテーブルにはまだデータが存在していないため、値はnullとなります。

これらをベン図で表すとこのようになります。

スクリーンショット 2021-11-08 7.09.35.png

INNER JOINのことを内部結合、OUTER JOINのことを外部結合と言います。LEFTが付くと左外部結合になります。ベン図を想像するとどっちがどっちか覚えやすいですね。

終わりに

 テーブル結合は必須の知識ですので、しっかり覚えておくようにしましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0