内部結合や外部結合を行う際に自然結合を指定すると、同じ名前とデータ型をもつ属性を、システムが自動的に結合キーと判断し、結合します。
以下のようにSQL文を記述すると、自然結合を行うことができます。
SELECT 社員コード, 社員名, 部門コード, 部門名, 上位部門コード FROM 社員 NATURAL INNER JOIN 部門
午後問題では、「様々な結合処理の方法」や「各コマンドにより行われる処理」を理解しているかが問われます。その際の具体的な質問パターンと解答方法を以下に示します。
質問パターン | 解答方法 | |
---|---|---|
この帳票を出すのになぜ外部結合が必要ですか? | 「外部結合を使わないと結合元の一方のテーブルのみにある行が出力されない」「それにより出力結果のレイアウトがどうなる」旨の文を本文の具体例を使って構成。 | |
この帳票を出すのになぜ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.