連載 [第6回] :
  初心者のための SQL-BOOTCAMP

テーブル結合について (Part.2) -「交差結合」「自然結合」「統合結合」

2023年3月23日(木)
久保 司
第6回となる今回は、前回に引き続き、複数のテーブルを使用するためのテーブル結合、「交差結合」「自然結合」「統合結合」について紹介します。

(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弾!
 毎回数百名ものエントリーをいただき、すっかりシリーズ化となってしまいました。 いつも応援いただいている皆様、ありがとうございます。 今回はキリの良い「5回目」ということで、デラックスに開催したいと思います。

今回ももちろん!システム開発エンジニアの皆さまに、多くの戦闘力アップのネタを提供していきます。

講演時間もセッション数もいつもよりデラックスに!
「DB最新事情」「テスト自動化」「SQL」「情報学」「プロジェクト管理」の豪華5本立てとなります。

長丁場となりますので、気になるセッションだけの受講でももちろんオッケーです!
タイトルとは裏腹に、中身はいたって真面目なお勉強系ウェビナー。 

興味ありな方、応援してくれている方、「ファンです!」な方、奮ってご参加ください。

【開催概要】

  • 日時:2023年5月25日(木)14:00~17:30
  • 参加形式:ウェビナー(Webセミナー)
  • 主催:株式会社システムインテグレータ
  • 定員:500名
  • 参加費:無料
  • 対象者:SIer・システム開発会社・情報子会社・情報システム部門のシステムエンジニア、プログラマー、リーダー、マネージャー、管理職、その他ご興味ある方
  • 参加申込:こちらから
株式会社システムインテグレータ
長年にわたり、基幹システム構築プロジェクトにおいて全工程を経験。その際、OracleやSQLServer等のDBMSでSQLを使用したプログラム開発を実施。現在は、製品企画室でスキル判定サービス「TOPSIC-SQL」のコンテンツ作成を主に担当。

連載バックナンバー

データベース技術解説
第10回

実践! 「TOPSIC SQL CONTEST」の練習問題にチャレンジしよう

2023/7/25
最終回となる今回は、これまでの訓練の成果を計るために、SQLの腕試しができるオンラインコンテスト「TOPSIC SQL CONTEST(TSC)」の練習問題にチャレンジしてみましょう。
データベース技術解説
第9回

神出鬼没!サブクエリについて(Part.2)

2023/6/29
第9回となる今回は、前回に引き続き、SQL文の中でも神出鬼没でさまざまな出現パターンを持つサブクエリについて解説していきます。
データベース技術解説
第8回

神出鬼没! サブクエリについて(Part.1)

2023/5/30
第8回となる今回からは、SQL文の中でも神出鬼没でさまざまな出現パターンを持つサブクエリについて解説していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています