SQLで「テーブルの結合」を行う:「データベーススペシャリスト試験」戦略的学習のススメ(13)(2/3 ページ)
あの“津崎さん”も保有する難関資格「データベーススペシャリスト」。本企画では、データベーススペシャリスト試験 午前/午後試験対策のための「基礎知識」を抜粋してお届けします。今回は、「テーブル結合の基礎」を解説します。
外部結合
左外部結合、右外部結合、全外部結合は、いずれも連結キーで複数のテーブルを結合します。以下のように結果がそれぞれ異なります。
以上2種類の構文で「左外部結合」を行います。FROM句を変更することで、「右外部結合」「全外部結合」を行うことができます。
構文1 (左外部結合) |
SELECT 列名1, 列名2,… FROM テーブル1 LEFT OUTER JOIN テーブル2 ON テーブル1.列名=テーブル2. 列名 |
---|---|
構文2 (左外部結合) |
SELECT 列名1, 列名2,… FROM テーブル1 LEFT OUTER JOIN テーブル2 USING(列名1, …) |
SELECT 句 | 結合後に表示する列名を指定 ※その他は通常のSELECT句と同じ |
FROM 句 | 結合するテーブル名を指定。RIGHT OUTER JOINと記述すれば右外部結合、FULL OUTER JOINと記述すれば全外部結合になる ※「OUTER」は省略可能 |
WHERE 句 ON 句 |
連結キーを「=」で指定する ※その他は通常のWHERE句と同じ |
USING 句 | 連結キーを指定する ※連結キーの名称が等しい場合のみ利用可能 |
以下のようにSQL文を記述することで「左外部結合」の処理結果を出力することができます。
SELECT 社員.社員コード, 社員.社員名, 部門.部門コード, 部門.部門名 FROM 社員 LEFT OUTER JOIN 部門 ON 社員.部門コード=部門.部門コード
SELECT 社員.社員コード, 社員.社員名, 部門.部門コード, 部門.部門名 FROM 社員 LEFT OUTER JOIN 部門 USING(部門コード)
自己結合
1つの表に対し別名(相関名)を使うことにより、あたかも2つの表を結合したように出力することを自己結合と呼びます。
以下の通りSQL文を記述することで、上記「自己結合の例」の結合処理を行うことができます。部門テーブルにX、Yという2つの名前を付与し、Xの上位部門コードとYの部門コードを結合キーとして結合します。
SELECT X.部門コード, X.部門名, X.上位部門コード, Y.部門名 AS 上位部門名 FROM 部門 X, 部門 Y WHERE X.上位部門コード=Y.部門コード
Chance問題
演習12-1
複数の事業部、部、課及び係のような組織階層の概念データモデルを、第3正規形の表、
として実装した。組織の親子関係を表示するSQL文中のaに入れるべき適切な字句はどれか。ここで、“組織”表記述中の下線部は、主キーを表し、追加の属性を想定する必要がある。また、モデルの記法としてUMLを用いる。{階層}は組織の親子関係が循環しないことを指示する制約記述である。
ア 組織1.親組織ID = 組織2.子組織ID
イ 組織1.親組織ID = 組織2.組織ID
ウ 組織1.組織ID = 組織2.親組織ID
エ 組織1.組織ID = 組織2.子組織ID
(H21春DB午前II問6)
解答 演習12-1 ウ
*囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)
本試験過去問題による類題演習 | |
---|---|
H17 午前問34 | SQL 文の実行結果(会員表同士を自己結合するSELECT 文) |
3表以上の結合
3つ以上の表についても結合ができます。
上図「3表以上の結合の例」を行うSQL文についても押えて下さい。以下3種類のSQL文は、どれも上図の結合処理を行います。
SELECT 社員.社員コード, 社員.社員名, 社員所属.部門コード, 部門.部門名 FROM 社員, 社員所属, 部門 WHERE 社員.社員コード=社員所属.社員コード AND 社員所属,部門コード=部門.部門コード
SELECT 社員.社員コード, 社員.社員名, 社員所属.部門コード, 部門.部門名 FROM 社員 INNER JOIN 社員所属 ON 社員.社員コード=社員所属.社員コード INNER JOIN 部門 ON 社員所属.部門コード=部門.部門コード
SELECT 社員.社員コード, 社員.社員名, 社員所属.部門コード, 部門.部門名 FROM 社員 INNER JOIN 社員所属 USING (社員コード) INNER JOIN 部門 USING (部門コード)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 春期試験の押さえどころを総ざらい!
本連載では、テクニカルエンジニア(データベース)試験に対応できる知識を確認していきます。多岐にわたる知識が問われる試験ですので、受験する方はもちろん、日常業務ではあまり使うことのない技術知識の確認にも役立ててください。 - データベーススペシャリスト試験(Database Specialist Examination)
ITエンジニアに必要な各種資格情報を解説する「@IT自分戦略研究所 資格辞典」。今回は、IPAが実施する情報処理技術者試験の「高度試験」9区分のうちの一つ「データベーススペシャリスト試験」を紹介する。 - 真のデータベースエンジニアを目指そう!
本連載は、ITシステム開発の現場でプログラミングやSQLのコーディングを行っているエンジニア(データベース利用者)が、データ管理者(DA)やデータベース管理者(DBA)へステップアップするための第一歩として有効な基礎知識を紹介する(編集局) - 【Oracle Database】忘れていませんか? 「アラートログ調査」に必要な、たった3つのキホン
データベース管理システムの運用でトラブルが発生したらどうするか。データベースサポートスペシャリストが現場目線の解決Tipsをお届けします。今回は基本編として「アラートログの調査で押さえるべき3つのポイント」を解説します。【Oracle Database 12c対応版】