JOINについて


はじめに

エンジニア1年生です。

日々の学びのメモとしてコツコツと記事を書こうと思っています。

今回はSQLのJOINについて書いていきます。


JOINとは??

テーブルを操作する際に複数のテーブルを結合して検索を行いたい場面が多々あるかと思います。

そんな時に複数のテーブルを結合する命令が「JOIN」です。


内部結合と外部結合


今回使用するテーブル

animalテーブル.png


内部結合とは?

内部結合は2つのテーブルを結合する際に一致したデータのみを取り出します。


文法

SELECT * FROM [テーブル名1] INNER JOIN [テーブル名2] ON [結合条件]


実行SQL

SELECT * FROM animal INNER JOIN name ON animal.id = name.animal_id


結果

内部結合.png

結合条件に一致しないデータ(animalテーブルのid:5)がないことが分かります。

結合する際に一致したデータのみを取り出す。

これが「内部結合」です。


外部結合とは?

軸になるテーブルを指定して軸になるテーブルにデータがあれば

結合されるテーブルと一致しなくてもデータを取り出します。

軸になるテーブルデータ全件取得して結合条件に一致したテーブルデータを結合するイメージです。


文法

SELECT * FROM [テーブル名1] LEFT OUTER JOIN [テーブル名2] ON [結合条件]

SELECT * FROM [テーブル名1] RIGHT OUTER JOIN [テーブル名2] ON [結合条件]


実行SQL

SELECT * FROM animal LEFT OUTER JOIN name ON animal.id = name.animal_id


結果

外部結合.png

内部結合の時と異なり一致しないデータも取り出されていることが分かります。

軸になるテーブルデータ全件+結合条件に一致したテーブルデータを結合する。

これが「外部結合」です。

「LEFT」「RIGHT」これでどちらのテーブルを軸にするかを指定しています。

LEFT:左側に指定されたテーブルが軸になります。

RIGHT:右側に指定されたテーブルが軸になります。

以上です。