テーブル結合について (Part.2) -「交差結合」「自然結合」「統合結合」
(3)統合結合【UNION/UNION ALL】
統合結合(UNION/UNION ALL
)は、2つ以上のSELECTの結果を統合します。取得結果を統合して表示するので、ここでは「統合結合」と呼んでいます。通常は「ユニオン」「ユニオンオール」と呼ばれています。
基本的な構文は、下記のようになります。
SELECT句 UNION/UNION ALL SELECT句;
説明に入る前に、社員テーブルと同じ構造のバックアップ用のテーブル、社員バックアップ(bkup_employees)を作成して確認の準備をします。
【社員バックアップCREATEコマンド】CREATE TABLE bkup_employees (emp_code INTEGER , emp_name TEXT , kana TEXT , gender TEXT , age INTEGER , dept_code INTEGER);【社員バックアップINSERTコマンド】
INSERT INTO bkup_employees (emp_code,emp_name,kana,gender,age,dept_code) VALUES ('1','HoriiTaro','ホリイタロウ','M','40','1') , ('2','IshimuraHana','イシムラハナ','F','33','2') , ('3','KitajimaRuna','キタジマルナ','F','45','3') , ('4','MuroiYuri', 'ムロイ ユリ','F', '27','1');
社員バックアップの内容を確認してみましょう。
SELECT * FROM bkup_employees;
INSERTコマンドで作成した、4件のデータが表示されています。次に、社員テーブルからemp_code=3と4のデータを削除して結果を確認してみましょう。
DELETE FROM tbl_employees WHERE emp_code IN ( 3 , 4 ); SELECT * FROM tbl_employees;
2件のデータが削除され、4件のデータが表示されています。それでは、統合結合の使用例を確認してみましょう。
初めに「UNION
」を試してみます。UNION
は、SELECT文で抽出したデータの内容が重複している場合に、まとめて表示します。
SELECT emp_code FROM tbl_employees UNION SELECT emp_code FROM bkup_employees;
社員テーブルと社員バックアップで重複しているemp_code =1と2のデータがそれぞれまとめられ、1件のみ表示されています。続いて、同じサンプルデータを利用して「UNION ALL
」を試してみましょう。UNION ALL
は、重複データがまとめられることはなく、抽出した全てのデータを表示します。
SELECT emp_code FROM tbl_employees UNION ALL SELECT emp_code FROM bkup_employees;
2つのSELECT文で抽出された、全てのデータが表示されています。UNION
では、まとめられていたemp_code =1と2のデータもそれぞれ2件表示されています。
統合結合の注意点として、SELECT句で指定する項目は、結果の数や型が同じである必要があります。使用例ではemp_codeの1項目のみでしたが、複数の項目を扱う場合は注意してください。
おわりに
前回から2回に渡って、テーブル結合について説明しました。5種類のテーブル結合がしっかりと理解できたでしょうか。
いきなりですが、ここで問題です! 自然結合で同じ名前の項目がないテーブルを結合した場合、結果はどうなるでしょうか? 今回登場したテーブルで確認できるので、訓練場で試してみてください。
次回は、テーブル結合のPart.3として、この問題の答え合わせを行った後に、テーブル結合の中でよく利用される「内部結合」について深掘りしていきます。
最後に、SQLの腕試しができるオンラインコンテスト「TOPSIC SQL CONTEST (TSC)」を紹介します。簡単な会員登録をするだけで、だれでも無料でコンテストに参加できるのでお手軽です。コンテストは不定期に開催されますが、過去のコンテスト問題も解答できるので、ぜひ、チャレンジしてみてください。
上記「TOPSIC SQL CONTEST (TSC)」サイト内にある、下記のアイコンから会員登録ができます。
それでは、また次回のSQL-BOOTCAMPでお会いしましょう!
「開発戦闘力アップセミナー」第5弾!
毎回数百名ものエントリーをいただき、すっかりシリーズ化となってしまいました。 いつも応援いただいている皆様、ありがとうございます。 今回はキリの良い「5回目」ということで、デラックスに開催したいと思います。
今回ももちろん!システム開発エンジニアの皆さまに、多くの戦闘力アップのネタを提供していきます。
講演時間もセッション数もいつもよりデラックスに!
「DB最新事情」「テスト自動化」「SQL」「情報学」「プロジェクト管理」の豪華5本立てとなります。
長丁場となりますので、気になるセッションだけの受講でももちろんオッケーです!
タイトルとは裏腹に、中身はいたって真面目なお勉強系ウェビナー。
興味ありな方、応援してくれている方、「ファンです!」な方、奮ってご参加ください。
【開催概要】
- 日時:2023年5月25日(木)14:00~17:30
- 参加形式:ウェビナー(Webセミナー)
- 主催:株式会社システムインテグレータ
- 定員:500名
- 参加費:無料
- 対象者:SIer・システム開発会社・情報子会社・情報システム部門のシステムエンジニア、プログラマー、リーダー、マネージャー、管理職、その他ご興味ある方
- 参加申込:こちらから