読み方 : しぜんけつごう
自然結合【NATURAL JOIN】
自然結合とは?
リレーショナルデータベースにおいてテーブルを結合する際、同じ名前を持つ列を自動的に検出して結合条件とする操作。SQLではNATURAL JOIN構文で記述する。利用者が結合条件を明示しなくても、システムが列名を照合して等値結合を実行する。

通常の内部結合では、ON句やUSING句によって結合に用いる列を明示的に指定する必要がある。自然結合ではその記述が不要で、データベースエンジンが対象テーブルの列定義を比較して一致する列名を自動的に結合条件へ組み込む。結合に使われた列は結果セットに重複して現れず、一つにまとめられる。
例えば、「社員」テーブルと「部署」テーブルの両方に「department_id」という列が存在する場合、「SELECT * FROM 社員 NATURAL JOIN 部署」のように記述するだけで、その列を条件とした結合が行われる。名前の一致する列が複数あれば、そのすべてが結合条件として扱われる。
一方、意図しない列での結合が起きるリスクがある。異なる意味を持ちながら偶然同じ列名が付けられている場合でも、自動的に結合条件へ加わるためである。また、後からテーブル定義が変更されて新たな共通列が追加されると、既存のSQL文が修正なしに異なる結果を返すようになる。大規模システムや長期運用される業務システムでは、こうした意図しない挙動を避けるため、結合条件を明示する「INNER JOIN ~ ON」形式が選ばれることが多い。
自然結合はSQL-92規格で標準化されており、MySQL、PostgreSQL、Oracle Databaseなど主要なRDBMSで利用できる。製品によっては「NATURAL LEFT JOIN」や「NATURAL RIGHT JOIN」のように外部結合と組み合わせた構文を備えるものもあり、一方のテーブルに一致行がない場合でも行を保持しながら結合を実行できる。対応する構文や動作は製品ごとに差異がある。