DBデータベーススペシャリスト試験 午前Ⅱ

平成30年度春期 データベーススペシャリスト 午前Ⅱ 問6

問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。

問題

次のSQL文は,A表に対するカーソルBのデータ操作である。aに入れる字句はどれか。 UPDATE A SET A2 = 1,A3 = 2 WHERE a ここで,A表の構造は次のとおりであり,実線の下線は主キーを表す。 A(A1,A2,A3) 主キー:A1

選択肢

  1. ア
    CURRENT OF A1
  2. イ
    CURRENT OF B
  3. ウ
    CURSOR B OF A
  4. エ
    CURSOR B OF A1
解き方のヒントを見る

カーソル更新文の役割を見分ける視点

カーソルを使う更新文は、宣言・処理開始・行の取得・更新対象の指定などを分けて考え、各要素が文全体のどの段階に関わるかを整理すると、役割の違いを比較しやすくなります。まず処理の流れを図にして確認しましょう。

この問題で問われていること

一つの要素が「対象を定義するもの」か「処理を開始するもの」か「対象行に働きかけるもの」かを、前後の記述との関係から分類する観点に絞って確認しましょう。用語の似ている点ではなく、担う段階の違いに注目します。

視点

カーソル関連の構成要素は、名前や見た目だけでなく、処理の時系列、参照対象、実行時に受け持つ責務という軸で整理します。各要素の説明が、どの段階と責務に結び付くかを読み比べましょう。

確認ポイント

  • 各要素が処理のどの段階に関係するかを確認する
  • 参照対象と操作対象の説明を分けて整理する
  • 似た用語の違いを担う責務の観点で比較する
正解と解説を見る

正解

イ

解説

このSQLは、A表についてカーソルBが現在指している行を対象に、A2とA3を更新する操作です。A1は主キー列であり、カーソル名ではありません。

理由

カーソルを用いたUPDATEでは、WHERE句でカーソルの現在位置にある行を指定できます。ここではカーソル名がBであるため、その指定にはBを用います。

比較

A1はA表の主キー列名であり、Aは表名です。一方、Bはカーソル名です。したがって、列や表を示す語句ではなく、カーソルを示す語句を選ぶ必要があります。

選択肢ア

これは不正解だよ。A1はA表の主キーとして示された列名であり、カーソル名ではありません。CURRENT OFの後には、この更新操作で使っているカーソルを指定するため、A1を置くことはできません。

選択肢イ(正解)

これは正解だよ。CURRENT OFはカーソルが現在指している行を更新対象にする指定です。この問題ではカーソル名がBなので、WHERE句はCURRENT OF Bとなり、A2を1、A3を2に更新します。

選択肢ウ

これは不正解だよ。CURSOR B OF Aという語句は、カーソルの現在行をUPDATEの対象として指定するWHERE句の構文になっていません。Aは表名、Bはカーソル名ですが、語の並びも指定方法も適切ではありません。

選択肢エ

これは不正解だよ。CURSOR B OF A1という語句は、カーソルの現在行を指定するSQL構文ではありません。さらにA1は主キー列名であり、カーソル名や現在行指定の対象を表す語ではないため、適切な記述になりません。

学習のポイント

CURRENT OF構文と、表の列名・主キー・カーソル名の役割を区別して学習しましょう。

出典:独立行政法人 情報処理推進機構(IPA)平成30年度春期 データベーススペシャリスト試験 午前Ⅱ 問6(公式資料:問題冊子(PDF) / 解答例)

関連する過去問一覧

IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針