DBデータベーススペシャリスト試験 午前Ⅱ
平成26年度春期 データベーススペシャリスト 午前Ⅱ 問7
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- アCURRENT OF A1
- イCURRENT OF B
- ウCURSOR B OF A
- エCURSOR B OF A1
解き方のヒントを見る
SQL抽出条件と結果を照合する視点
抽出条件を読んだら、対象となる行の判定単位と、条件が適用される段階を整理します。NULL、重複、結合後の行数などは個別に切り分け、結果の見た目だけで判断しないようにします。
この問題で問われていること
この問題では、条件式の各部分を機械的に追うのではなく、どの行が判定対象になり、条件の評価が結果集合へどう反映されるかという一点に注目して確認します。
視点
SQLの抽出結果を考えるときは、条件そのものだけでなく、評価される行のまとまりと処理の段階を対応付けます。各要素を分離して考えると、結果の増減や除外理由を整理しやすくなります。
確認ポイント
- 判定の対象となる行の単位を整理する
- 各条件が評価される段階を区別する
- NULLや重複が結果の見え方に与える影響を確認する
正解と解説を見る
正解
イ
解説
このSQLは、A表に対するカーソルBの現在行を更新する位置付けUPDATEです。WHERE句には現在行を示す構文と、対象となるカーソル名を記述するため、aにはCURRENT OF Bが入る。
正答の理由
設問はカーソルBのデータ操作としてUPDATEを行う文を示している。A2を1、A3を2に変更する対象はカーソルBが現在指している行であり、位置付けUPDATEではWHERE CURRENT OFに続けてカーソル名を指定する。したがってaはCURRENT OF Bとなる。
選択肢の比較
A1はA表の主キー列であってカーソル名ではありません。また、CURSOR B OF AやCURSOR B OF A1は、設問のUPDATE文のWHERE句で現在行を指定する構文になっていない。列名・表名・カーソル名の役割を区別すると判断できる。
選択肢ア
これは不正解だよ。CURRENT OFはカーソルの現在行を指定するための構文なので、後ろにはカーソル名を置く。A1はA表の主キー列であり、設問で示されたカーソルBを表していないため、この記述ではカーソルBの現在行を指定できない。
選択肢イ(正解)
これは正解だよ。設問のUPDATEはカーソルBのデータ操作であり、更新対象はカーソルBが現在指しているA表の行である。位置付けUPDATEではWHERE CURRENT OFにカーソル名を続けるため、aにはCURRENT OF Bを指定する。
選択肢ウ
これは不正解だよ。CURSOR B OF Aは、カーソルの現在行をWHERE句で指定する位置付けUPDATEの構文ではない。設問ではカーソル名Bを使って現在行を指定する必要があり、表Aとの関係をこの語順で記述するものではない。
選択肢エ
これは不正解だよ。CURSOR B OF A1は、カーソルB、表A、主キー列A1を組み合わせた表現だが、位置付けUPDATEのWHERE句で使う現在行指定の構文ではない。主キー列A1をカーソル指定の一部に置くことも適切ではない。
学習のポイント
表の列名・主キー・カーソル名を区別し、位置付けUPDATEのWHERE句の構文を理解する。
出典:独立行政法人 情報処理推進機構(IPA)平成26年度春期 データベーススペシャリスト試験 午前Ⅱ 問7(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針