ホーム > データベーススペシャリスト試験 > 2014年
データベーススペシャリスト試験 2014年 午前2 問07
次の SQL 文は, A 表に対するカーソルBのデータ操作である。(a) に入れるべき適切な字句はどれか。
UPDATE A
SET A2 = 1, A3 = 2
WHERE (a)
ここで, A表の構造は次のとおりであり, 下線は主キーを表す。
A(<u>A1</u>, A2, A3)
ア:CURRENT OF A1
イ:CURRENT OF B(正解)
ウ:CURSOR B OF A
エ:CURSOR B OF A1
解説
SQLのカーソル操作に関する問題【午前2 解説】
要点まとめ
- 結論:UPDATE文のWHERE句にカーソルの現在位置を指定する場合は「CURRENT OF カーソル名」を使います。
- 根拠:SQL標準で、カーソルが指す行を更新する際は「WHERE CURRENT OF カーソル名」が正しい構文です。
- 差がつくポイント:カーソル名を正しく指定し、主キー名やカーソル宣言文をWHERE句に誤って使わないことが重要です。
正解の理由
SQL文でカーソルBが指す現在の行を更新するには、WHERE句に「CURRENT OF B」と記述します。
これは「カーソルBが現在指している行を対象に更新する」という意味で、主キー名やカーソル宣言文はWHERE句に直接使えません。
したがって、選択肢イの「CURRENT OF B」が正解です。
これは「カーソルBが現在指している行を対象に更新する」という意味で、主キー名やカーソル宣言文はWHERE句に直接使えません。
したがって、選択肢イの「CURRENT OF B」が正解です。
よくある誤解
「CURRENT OF」の後に主キー名やテーブル名を入れる誤りが多いです。カーソル名を指定するのが正しい使い方です。
解法ステップ
- 問題文のSQL文の目的を確認する(カーソルBの現在行を更新)。
- WHERE句にカーソルの現在行を指定する構文を思い出す。
- 「WHERE CURRENT OF カーソル名」が正しいことを理解する。
- 選択肢の中から「CURRENT OF B」を選ぶ。
選択肢別の誤答解説
- ア: CURRENT OF A1
→ A1は主キー列名であり、カーソル名ではないため誤り。 - イ: CURRENT OF B
→ カーソルBの現在行を指定する正しい構文。 - ウ: CURSOR B OF A
→ これはカーソル宣言の文法であり、WHERE句に使えない。 - エ: CURSOR B OF A1
→ 同様にカーソル宣言の文法で誤り。
補足コラム
SQLのカーソルは、複数行の結果セットを1行ずつ処理するために使います。
「CURRENT OF カーソル名」は、カーソルが現在指している行を特定し、その行に対してUPDATEやDELETEを行う際に使う重要な構文です。
主キー名やテーブル名を直接WHERE句に使うのは、カーソル操作とは異なる更新方法です。
「CURRENT OF カーソル名」は、カーソルが現在指している行を特定し、その行に対してUPDATEやDELETEを行う際に使う重要な構文です。
主キー名やテーブル名を直接WHERE句に使うのは、カーソル操作とは異なる更新方法です。
FAQ
Q: カーソル名はどのように決めるのですか?
A: カーソル名はSQL文内で宣言時に任意に付けます。問題文では「B」がカーソル名です。
A: カーソル名はSQL文内で宣言時に任意に付けます。問題文では「B」がカーソル名です。
Q: 「CURRENT OF」はどんな場面で使いますか?
A: カーソルが指す現在の行をUPDATEやDELETEで操作するときに使います。
A: カーソルが指す現在の行をUPDATEやDELETEで操作するときに使います。
関連キーワード: SQL, カーソル, UPDATE文, CURRENT OF, 主キー, データベース操作