SQLで「テーブルの結合」を行う「データベーススペシャリスト試験」戦略的学習のススメ(13)(3/3 ページ)

» 2017年07月18日 05時00分 公開
[具志堅融, 河科湊ITmedia]
前のページへ 1|2|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 文を変更。

Chance問題

Point check

“商品”表と“売上明細”表に対して、次のSQL文を実行した結果の表として、正しいものはどれか。ここで、結果の表中の“-”は、値がナルであることを示す。

Point check

(H18春DB午前問32)


Point check

解答 Point check 

 *囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)

書籍紹介

ポケットスタディ データベーススペシャリスト [第2版]

ポケットスタディ データベーススペシャリスト [第2版]

具志堅融、河科湊著
秀和システム 1,500円

データベーススペシャリスト試験は同じパターンの出題が多いため、過去問をたくさん解くことが合格の早道です。しかし、難易度の高い過去問を解くには、勉強が必要であり、多くの時間と労力を必要とします。本書は、プロの講師が推奨する、テキストを少し読み→該当する過去問を解き→理解を深めるというアジャイル的学習法で、驚くほど短時間で合格するツボとコツを解説します。"すき間時間"を活用して効果的な学習ができます!


注文ページへ

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。