内部結合【INNER JOIN句】
概要

リレーショナルデータベースでは、データの重複を避けるため、関連する情報を用途ごとに複数のテーブルへ分割して管理することが多い。実際の検索では、複数のテーブルを結合して必要な情報を組み合わせる処理が頻繁に行われる。内部結合はその中で最も基本的な結合方法である。
SQL文では「INNER JOIN」句を用いて「SELECT * FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.列1 = テーブル2.列2」のように記述する。ON句で結合条件を指定し、テーブル1の列1とテーブル2の列2の値を比較して、一致するレコード同士を連結する。
処理の結果として得られるのは、テーブル1の各列の後ろにテーブル2の各列が連結された、一つのレコードの集合である。結合条件には異なる名前の列だけでなく、同じ名前の列や複数の列を組み合わせることもできる。主キーや外部キーを条件に結合することが多いが、それ以外の列を条件とすることも可能である。
なお、複数のテーブルを結合する際にON句で結合条件を明示せず、単純にテーブルを列挙するだけの記述方法も存在するが、その場合は総当たりで組み合わせが生成される点に注意が必要である。意図した結合結果を得るためには、ON句によって結合条件を正しく指定することが求められる。
内部結合で抽出されるのは、指定した列の値が双方に存在し、一致するレコードのみである。片方のテーブルに対応するレコードが存在しない場合、そのレコードは結果から除外される。例えば、顧客テーブルと注文テーブルを顧客IDで内部結合すると、一件も注文をしていない顧客のレコードは抽出結果に含まれない。両方のテーブルに共通するデータの組み合わせのみを扱いたい場合に適した結合方式であり、顧客と注文、商品と在庫、社員と所属部署など、共通の列によって関連付けられたデータを取得する際に広く利用される。
一致しない列を含むレコードも合わせて抽出したい場合は、内部結合ではなく「外部結合」(OUTER JOIN)を用いる。外部結合には「左外部結合」(LEFT JOIN)、「右外部結合」(RIGHT JOIN)、「完全外部結合」(FULL JOIN)といった種類があり、どちらのテーブルを基準にするかによって使い分ける。内部結合と外部結合は対になる概念として扱われ、データベース設計やSQLを用いたデータ抽出における基本的な知識・技法として重要となる。