テーブル結合またはテーブル マージはリレーショナル データベースの有名な機能であり、非常に強力です。これにより、複数のソースからの情報を統合して、より一貫性のある有意義なデータ洞察を作成できるようになります。また、データを後で参照できる、より小さく管理しやすいチャンクに分割できるため、リレーショナル データベースのスケーラビリティが高くなります (柔軟性はありません)。
このチュートリアルでは、テーブル結合またはテーブルマージの基礎について説明します。知識を定着させるために、実際のテーブルのサンプルを見てみましょう。
サンプルテーブル
テーブル結合の世界に入る前に、デモンストレーションの目的で使用する基本的なテーブルをセットアップしましょう。
次のクエリ例に示すように、従業員と給与の情報を含む 2 つのテーブルについて考えてみましょう。
CREATE TABLE 従業員 (
従業員 ID INT AUTO_INCREMENT 主キー、
first_name VARCHAR( 50 )、
姓 VARCHAR( 50 )、
部門 VARCHAR( 50 )
);
次に、次のクエリに示すように、サンプル データを従業員のテーブルに挿入できます。
INSERT INTO 従業員 (名、姓、部門) VALUES
( 「アリス」 、 「スミス」 、 '人事' )、
( 'ボブ' 、 「ジョンソン」 、 'マーケティング' )、
( 「チャーリー」 、 「ウィルソン」 、 'ファイナンス' )、
( 「デビッド」 、 '茶色' 、 「販売」 )、
( 『エヴァ』 、 「デイビス」 、 'エンジニアリング' );
次のように、給与情報を保存するための新しいテーブルを作成してみましょう。
CREATE TABLE の給与 (給与 ID INT AUTO_INCREMENT 主キー、
従業員 ID INT、
給与 DECIMAL( 10 、 2 )、
start_date DATE、
end_date DATE、
FOREIGN KEY (employee_id) REFERENCES 従業員(employee_id)
);
次のように、挿入サンプル データをテーブルに追加します。
INSERT INTO 給与 (employee_id、salary、start_date、end_date) VALUES
( 1 、 60000.00 、 「2023-01-01」 、 「2023-12-31」 )、
( 2 、 55000.00 、 「2023-01-01」 、 「2023-12-31」 )、
( 3 、 65000.00 、 「2023-01-01」 、 「2023-12-31」 )、
( 4 、 58000.00 、 「2023-01-01」 、 「2023-12-31」 )、
( 5 、 70000.00 、 「2023-01-01」 、 「2023-12-31」 );
これにより、SQL でのテーブルの結合/マージの概念を説明するのに役立つ 2 つのテーブルが得られます。
SQL テーブルのマージ/テーブル結合
実行できるさまざまなタイプのテーブル結合を見てみましょう。基本的なものを取り上げながら、より高度なものに進みます。
内部結合
SQL におけるテーブル結合の最初の最も一般的なタイプは INNER JOIN です。 INNER JOIN を使用すると、特定の条件に基づいて 2 つのテーブルの行を結合できます。このタイプは、テーブル間に一致する行のみを返します。
先ほど作成した「従業員」テーブルと「給与」テーブルを例に挙げてみましょう。 SQL で INNER JOIN を実行するには、次のように INNER JOIN 句を使用します。
選択するe.employee_id、
e.名、
e.姓、
e.部門、
給料
から
従業員
INNER JOIN の給与 の上
e.従業員_id = s.従業員_id;
指定されたクエリ例では、INNER JOIN を使用して、「employees」テーブルと「salaries」テーブルを、両方のテーブルに存在する「employee_id」列でマージします。結果のセットには、両方のテーブルの一致する行のみが含まれます。
出力例は次のとおりです。
左外部結合
また、左側のテーブルのすべての行と右側のテーブルの一致する行を結合する LEFT OUTER JOIN もあります。右側のテーブルに一致するものがない場合、結合では NULL 値が使用されます。
選択するe.employee_id、
e.名、
e.姓、
e.部門、
給料
から
従業員
LEFT JOIN の給与
の上
e.従業員_id = s.従業員_id;
この例では、LEFT OUTER JOIN を実行して、「employees」テーブルと「salaries」テーブルを結合します。 「employees」テーブルのすべての行が含まれ、「salaries」テーブルの一致する行が追加されます。ただし、一致しない行の「給与」列には NULL 値が含まれます。
SQL UNION
SQL でテーブルを結合するもう 1 つの方法は、UNION 演算子を使用することです。この演算子を使用すると、2 つ以上の選択ステートメントの結果を 1 つの結果セットに結合できます。
ユニオンを適用するには、各 SELECT ステートメントの列のデータ型が同じである必要があります。
例は次のとおりです。
SELECT 従業員 ID 、 名 、 姓 、 部門 、 NULL AS 給与従業員から
連合
SELECT 従業員 ID 、 NULL AS first_name 、 NULL AS last_name 、 NULL AS 部門、給与
給与から;
この場合、UNION は「employees」テーブルと「salaries」テーブルをマージします。次に、各 SELECT ステートメントで NULL 列を作成し、両方のテーブルの列数が同じになるようにします。
UNION は技術的には一般的ですが、特に構造が異なるテーブルをマージする必要がある場合に役立ちます。
結論
このチュートリアルでは、2 つのテーブルを 1 つの結果セットに結合/マージする基本を学びました。この投稿では、より高度な結合が多数説明されていることに留意してください。