1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SQL】テーブル結合が一生分からないSEのための備忘録

Last updated at Posted at 2024-08-10

はじめに

SQLを使い始めて少し経ちましたが、テーブル結合の種類が多くいまいち覚えきれていないため備忘録を残します。
同じような方のお役に立てば幸いです。

テーブル結合の種類

テーブル結合には以下の種類があります。

種類 概要
内部結合(INNER JOIN) テーブル間で指定した項目が一致するレコードのみを取得する
外部結合(OUTER JOIN) テーブル間で指定した項目が一致しないレコードも取得する
交差結合(CROSS JOIN) テーブル間の全てのレコードの組合せを取得する
自然結合(NATURAL) 項目を指定しなくてもテーブル間で共通する項目で結合して取得する
統合結合(UNION) 2つの問い合わせで得られた表を統合して取得する

ここから先はよく使う内部結合と外部結合について記述します。

内部結合(INNER JOIN)

内部結合は、テーブル間で指定した項目が一致するレコードのみを取得します。
例えば、以下のようなSQLクエリがあります。

SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;

このクエリは、table1とtable2のidカラムが一致するレコードを結合し、結果として共通するレコードのみを取得します。

実際にテーブルを結合するイメージは以下のようになります。
内部結合.png

外部結合(OUTER JOIN)

外部結合は、テーブル間で指定した項目が一致しないレコードも取得します。
外部結合には、主に以下の3種類があります。

種類 概要
左外部結合(LEFT OUTER JOIN) 左側のテーブルの全てのデータと、右側のテーブルの一致するデータを取得する
右外部結合(RIGHT OUTER JOIN) 右側のテーブルの全てのデータと、左側のテーブルの一致するデータを取得する
完全外部結合(FULL OUTER JOIN) 両方のテーブルの全てのデータを結合し、どちらか一方に一致するデータも含めて取得する

左外部結合(LEFT OUTER JOIN)

左外部結合は、左側のテーブルの全てのデータと、右側のテーブルの一致するデータを取得します。
例えば、以下のようなSQLクエリがあります。

SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;

このクエリは、table1の全ての行と、table2の一致する行を結合し、table2に一致する行がない場合はNULLを返します。

実際にテーブルを結合するイメージは以下のようになります。
左外部結合.png

右外部結合(RIGHT OUTER JOIN)

右外部結合は、右側のテーブルの全てのデータと、左側のテーブルの一致するデータを取得します。
例えば、以下のようなSQLクエリがあります。

SELECT * FROM table1 RIGHT JOIN table2 ON table1.id = table2.id;

このクエリは、table2の全ての行と、table1の一致する行を結合し、table1に一致する行がない場合はNULLを返します。

実際にテーブルを結合するイメージは以下のようになります。
右外部結合.png

完全外部結合(FULL OUTER JOIN)

完全外部結合は、両方のテーブルの全てのデータを結合し、どちらか一方に一致するデータも含めて取得します。
例えば、以下のようなSQLクエリがあります。

SELECT * FROM table1 FULL JOIN table2 ON table1.id = table2.id;

このクエリは、table1とtable2の全ての行を結合し、どちらか一方に一致するデータも含めます。
一致しない部分にはNULLが入ります。

実際にテーブルを結合するイメージは以下のようになります。
完全外部結合.png


以上です。
またなにかあれば追記します。

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?