MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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というように、目的に応じて適切に使い分けることが重要です。

  1. SQLのテーブル・ビュー・シノニムの違いをわかりやすく解説

    本記事では、構造化照会言語(SQL)における「テーブル」「ビュー」「シノニム」の違いについて、具体例を交えながら詳しく解説します。 テーブル・ビュー・シノニムとは テーブルはデータを格納する「実体(リポジトリ)」であり、データベース内に物理的に存在します。 ビューはデータベースの物理的な構成要素ではありません。事前にコンパイルされているためデータ取得が高速になるという特徴に加え、安全なアクセス制御の仕組みも提供してくれます。 シノニムとは、テーブル・ビュー・シーケンス・プログラムユニットなどに対して割り当てる「別名(代替名)」のことです。 具体例 まず、次のような従業員テーブルを作成してみま

  2. SQLのALTERコマンドとUPDATEコマンドの違いをわかりやすく解説

    SQLには、データベースを操作するためのコマンドが多数用意されています。その中でも「ALTERコマンド」と「UPDATEコマンド」は、どちらも既存のテーブルに変更を加えるという点で似ていますが、実際には役割や操作対象がまったく異なります。この記事では、ALTERコマンドとUPDATEコマンドそれぞれの特徴・構文・使い分けのポイントを解説します。ALTERコマンドとはデータ定義言語(DDL:Data Definition Language)に分類されるコマンドです。データそのものではなく、テーブルの構造レベルに対して操作を行います。データベース内のテーブルに対して、列(カラム)の追加・削除、属性