SQLで「テーブルの結合」を行う:「データベーススペシャリスト試験」戦略的学習のススメ(13)(3/3 ページ)
あの“津崎さん”も保有する難関資格「データベーススペシャリスト」。本企画では、データベーススペシャリスト試験 午前/午後試験対策のための「基礎知識」を抜粋してお届けします。今回は、「テーブル結合の基礎」を解説します。
自然結合
内部結合や外部結合を行う際に自然結合を指定すると、同じ名前とデータ型をもつ属性を、システムが自動的に結合キーと判断し、結合します。
以下のようにSQL文を記述すると、自然結合を行うことができます。
SELECT 社員コード, 社員名, 部門コード, 部門名, 上位部門コード FROM 社員 NATURAL INNER JOIN 部門
ポイント
- 「NATURAL INNER JOIN」の記述箇所を、「NATURAL LEFT OUTER JOIN」と記述すれば自然左外部結合に、「NATURAL RIGHT OUTER JOIN」と記述すれば自然右外部結合に、「NATURAL FULL OUTER JOIN」と記述すれば自然全外部結合になります
- 結合キーを自動決定するため、USINGにおける指定はできません
- 同じ名前の属性が複数あるいは複数組が存在する場合、全て結合キーとなります
- 表示列を「*」で指定した場合、表示列は「結合キーの属性」「結合キー以外の社員テーブルの属性」「結合キー以外の部門テーブルの属性」の順に表示されます
- 「INNER」「OUTER」は省略可能です
午後演習 SQLに関する論述パターン
午後問題では、「様々な結合処理の方法」や「各コマンドにより行われる処理」を理解しているかが問われます。その際の具体的な質問パターンと解答方法を以下に示します。
質問パターン | 解答方法 | |
---|---|---|
この帳票を出すのになぜ外部結合が必要ですか? | 「外部結合を使わないと結合元の一方のテーブルのみにある行が出力されない」「それにより出力結果のレイアウトがどうなる」旨の文を本文の具体例を使って構成。 | |
この帳票を出すのになぜCOALESCEを使用するのですか? | 「ある結果がNULL だと出力結果のレイアウトが○○になるため、NULL でなく0 として扱いたい」旨の文を本文の具体例を使って構成。 | |
内部結合の結果と、IN句やEXISTS句を利用した同様の処理結果で、なぜ件数が異なるのですか? | 内部結合ではDISTINCTを用いない限り重複行を複数件カウントするが、IN句やEXISTS句では重複行を1 件としてカウントするため。 |
なお、午後問題で複雑なSQL文の穴埋め問題を解くときには、まず全体を見渡し、どこで何をしているかを掴みます(ここで「AS ○○」の○○は、直前のSQL文の概要を示すので重要なヒントになります)。全体が掴めたら、解り易い箇所から順に解析していき、部分的に理解して得た知識を基に、更にその周辺からじわじわと解析するよう進めていきましょう。途中で理解できなくなった場合は、 SQL文の各箇所での処理結果を絵に描きながら少しずつ理解していきましょう。
以下はSQLに関する過去問題です。難易度が低い順に並べていますので、トレーニング等にご活用下さい。
結合する表が多い場合のSQL文は若干複雑で理解が大変ですが、そんなときは全体を見て、何種類の表(もしくはSQL文の処理結果)が結合されているのかを整理していきます。実際にインスタンスを書くと効果的です。
本試験過去問題による類題演習 | |
---|---|
□H16 午後I問2 設問1(1)(2) | (1)では帳票通りに出力するために必要なSQL の一部を記述。(2)では外部結合を使用する理由を説明。 |
□H17 午後I問3 設問1(1)(2) | (1)では帳票通りに出力するために必要なSQL の一部を記述。(2)では外部結合が必要な理由を説明。 |
□H17 午後I問3 設問2(1)(2) | 設問2からでも解答可能。(1)ではSQL による集計結果の件数を解答。(2)ではCOALESCE を使用する理由を説明。 |
□H20 午後I問3 設問1(1)(2) | (1)では帳票通り出力するために必要なSQL 文の一部を記述。(2)では外結合を行わない場合どのようになるかを説明。 |
□H20 午後I問3 設問2(1)(2) | 設問1 の理解が前提。(1)では性能向上を行うための導出表を設計。(2)では導出表を利用するためにSQL 文を変更。 |
解答 Point check ア
*囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)
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対応版】