INNER JOIN

完了

テーブルの結合

リレーショナル データベースでは、冗長性を最小限に抑え、データの整合性を強化するために、データが複数のテーブルに整理されることが多くなります。 この設計アプローチは正規化と呼ばれ、異なる場所で同じ情報を繰り返すのを回避します。 ただし、これは、多くの場合、有用な情報が複数のテーブルに分散されることを意味します。

結合は、このギャップを埋める重要な SQL 操作です。これにより、2 つ以上のテーブルの行を結合し、1 つの統合された結果セットで関連データを取得できます。 基本的に、結合を使用すると、論理的に接続されているが物理的に分離された情報を照会できます。 これらの組み合わせは、テーブル間の 1 つ以上の一般的な列にある値に基づいて行を識別して照合することで実現します。 これらの一般的な列は、多くの場合、1 つのテーブルの主キーと別のテーブルの外部キーの間のリンクとして機能し、データベース スキーマで定義されているリレーションシップを確立します。

注: 主キーは、テーブル内の各レコードの一意の識別子であり、この列に同じ値を持つ行が 2 つないことを確認します。 一方、外部キーは、1 つのテーブルの列であり、別のテーブルの主キーを参照し、2 つのテーブルをリンクします。

結合には複数の "フレーバー" (INNERLEFTRIGHTFULL OUTERNATURAL) があり、それぞれ少し異なる方法でテーブルを結合するように設計されています。 結合テーブル内の一致する値の有無に基づいて、結果セットに含める行を制御できます。

INNER JOIN

INNER JOINは、最も一般的に使用される SQL 結合の種類の 1 つです。 共有列の一致する値を指定する条件に基づいて、複数のテーブルの行を結合します。

INNER JOINを実行すると、両方のテーブルの条件を満たす行のみが結果セットに含まれるので、一致しないデータが効果的に除外されます。 これにより INNER JOIN 顧客の注文や従業員の割り当てなど、テーブル間の接続が明示的に定義されている関連情報を取得するのに最適です。

SELECT orders.order_id, customers.customer_name, employees.first_name, employees.last_name
FROM sales.orders AS orders
INNER JOIN sales.customers AS customers ON orders.customer_id = customers.customer_id
INNER JOIN sales.employees AS employees ON orders.employee_id = employees.employee_id;

指定されたクエリでは、複数の INNER JOIN 操作を使用して、 orderscustomers、および employeesに関する詳細を含む統合結果セットを取得します。

customer_id テーブル内のordersと、customer_id テーブル内の対応するcustomersと、employee_id テーブル内のordersと、employee_id テーブルのemployeesが一致します。 その結果、各注文の ID が、関係する顧客と従業員の名前と共に出力されます。