SQLの内部結合(INNER JOIN)と外部結合(OUTER JOIN)の違いを徹底解説
SQLで複数のテーブルを扱う際に欠かせないのが「結合(JOIN)」です。結合には大きく分けて内部結合(INNER JOIN)と外部結合(OUTER JOIN)の2種類があり、それぞれ動作や用途が異なります。本記事では、両者の違いや構文、使い分けのポイントをわかりやすく解説します。
内部結合(INNER JOIN)とは
使用する句は「INNER JOIN」および「JOIN」です。
2つ以上のテーブルを結合し、結合条件に一致するタプル(行)のみを返します。
共通の属性(カラム)が存在しない場合、結果は空になります。
タプル数が多い場合、INNER JOINはOUTER JOINと比較して高速に動作します。
特定の属性に関する詳細情報を取得したい場合に適しています。
「JOIN」と「INNER JOIN」はまったく同じ動作を行います。
構文
SELECT * FROM table_1 INNER JOIN / JOIN table_2 ON table_1.column_name = table_2.column_name;
外部結合(OUTER JOIN)とは
指定したテーブルのタプルを結合して返します。
結合条件が成立しない場合でも、結果として行が返されます。
「LEFT OUTER JOIN」「RIGHT OUTER JOIN」「FULL OUTER JOIN」の各句を使用できます。
共通属性の有無に依存しません。
対応する属性が空の場合、代わりにNULLが格納されます。
OUTER JOINはINNER JOINと比較すると処理速度が遅くなります。
できるだけ完全な情報を取得したい場合に利用されます。
「FULL OUTER JOIN」と「FULL JOIN」は同じ動作を行います。
構文
SELECT * FROM table_1 LEFT OUTER JOIN / RIGHT OUTER JOIN / FULL OUTER JOIN / FULL JOIN table_2 ON table_1.column_name = table_2.column_name;
外部結合の3つの種類
LEFT OUTER JOIN(左外部結合): 左側のテーブルの全行を必ず返し、右側のテーブルに一致する行がない場合はNULLを返します。
RIGHT OUTER JOIN(右外部結合): 右側のテーブルの全行を必ず返し、左側のテーブルに一致する行がない場合はNULLを返します。
FULL OUTER JOIN(完全外部結合): 両方のテーブルの全行を返し、一致しない部分にはNULLを返します。
内部結合と外部結合の比較まとめ
| 比較項目 | 内部結合(INNER JOIN) | 外部結合(OUTER JOIN) |
|---|---|---|
| 取得される行 | 結合条件に一致する行のみ | 一致しない行も含まれる |
| 共通属性がない場合 | 結果は空になる | NULLを埋めて結果を返す |
| 処理速度 | 比較的高速 | 比較的低速 |
| 主な用途 | 特定データの詳細情報を取得したいとき | 全件の完全な情報を取得したいとき |
まとめ
内部結合は「一致するデータだけを効率よく取得したい場合」に、外部結合は「片方のテーブルのデータを漏れなく残したい場合」に最適です。処理速度を重視するならINNER JOIN、網羅性を重視するならOUTER JOINというように、目的に応じて適切に使い分けることが重要です。
-
SQLのテーブル・ビュー・シノニムの違いをわかりやすく解説
本記事では、構造化照会言語(SQL)における「テーブル」「ビュー」「シノニム」の違いについて、具体例を交えながら詳しく解説します。 テーブル・ビュー・シノニムとは テーブルはデータを格納する「実体(リポジトリ)」であり、データベース内に物理的に存在します。 ビューはデータベースの物理的な構成要素ではありません。事前にコンパイルされているためデータ取得が高速になるという特徴に加え、安全なアクセス制御の仕組みも提供してくれます。 シノニムとは、テーブル・ビュー・シーケンス・プログラムユニットなどに対して割り当てる「別名(代替名)」のことです。 具体例 まず、次のような従業員テーブルを作成してみま
-
SQLのALTERコマンドとUPDATEコマンドの違いをわかりやすく解説
SQLには、データベースを操作するためのコマンドが多数用意されています。その中でも「ALTERコマンド」と「UPDATEコマンド」は、どちらも既存のテーブルに変更を加えるという点で似ていますが、実際には役割や操作対象がまったく異なります。この記事では、ALTERコマンドとUPDATEコマンドそれぞれの特徴・構文・使い分けのポイントを解説します。ALTERコマンドとはデータ定義言語(DDL:Data Definition Language)に分類されるコマンドです。データそのものではなく、テーブルの構造レベルに対して操作を行います。データベース内のテーブルに対して、列(カラム)の追加・削除、属性