SQL で 2 つのテーブルをマージする

Sql De 2 Tsunoteburuwomajisuru



SQL では、テーブルのマージとは、特定のデータベース内の 2 つの別々のテーブルのデータを、共通の列または基準に基づいて 1 つのユニットに結合するプロセスを指します。はい、表のように聞こえるかもしれませんが、まさにその通りです。

テーブル結合またはテーブル マージはリレーショナル データベースの有名な機能であり、非常に強力です。これにより、複数のソースからの情報を統合して、より一貫性のある有意義なデータ洞察を作成できるようになります。また、データを後で参照できる、より小さく管理しやすいチャンクに分割できるため、リレーショナル データベースのスケーラビリティが高くなります (柔軟性はありません)。

このチュートリアルでは、テーブル結合またはテーブルマージの基礎について説明します。知識を定着させるために、実際のテーブルのサンプルを見てみましょう。







サンプルテーブル

テーブル結合の世界に入る前に、デモンストレーションの目的で使用する基本的なテーブルをセットアップしましょう。



次のクエリ例に示すように、従業員と給与の情報を含む 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 つの結果セットに結合/マージする基本を学びました。この投稿では、より高度な結合が多数説明されていることに留意してください。