データベーススペシャリスト試験 2018年 午前2 問06
次のSQL文は、A表に対するカーソルBのデータ操作である。(a)に入れる字句はどれか。
UPDATE A
SET A2 = 1, A3 = 2
WHERE <b>(a)</b>
ここで、A表の構造は次のとおりであり、実線の下線は主キーを表す。
A(A1, A2, A3)
ア:CURRENT OF A1
イ:CURRENT OF B(正解)
ウ:CURSOR B OF A
エ:CURSOR B OF A1
解説
SQLのUPDATE文におけるカーソルのCURRENT OF句【午前2 解説】
要点まとめ
- 結論:UPDATE文のWHERE句でカーソルの現在行を指定するには「CURRENT OF カーソル名」を使います。
- 根拠:SQL標準では、カーソルの現在位置を参照するために「CURRENT OF カーソル名」という句が用いられます。
- 差がつくポイント:主キー名ではなく、カーソル名を正確に指定することが重要で、誤って主キー名やカーソル宣言文を入れないことです。
正解の理由
UPDATE文のWHERE句に入れるべき字句は「CURRENT OF B」です。
これは、カーソルBが指している現在の行を特定し、その行に対して更新を行うための標準的な書き方です。
「CURRENT OF B」とすることで、カーソルBが現在位置している行の主キーを自動的に参照し、正確に更新対象を絞れます。
これは、カーソルBが指している現在の行を特定し、その行に対して更新を行うための標準的な書き方です。
「CURRENT OF B」とすることで、カーソルBが現在位置している行の主キーを自動的に参照し、正確に更新対象を絞れます。
よくある誤解
「CURRENT OF」の後には主キー名やカーソルの宣言文を入れると思い込みがちですが、正しくはカーソル名のみを指定します。
解法ステップ
- 問題文のUPDATE文のWHERE句に入る字句を考える。
- カーソルBがA表の行を指していることを確認。
- SQLのカーソル操作で現在行を指定する句は「CURRENT OF カーソル名」であることを思い出す。
- 選択肢の中から「CURRENT OF B」を選択する。
選択肢別の誤答解説ステップ
- ア: CURRENT OF A1
→ A1は主キー列名であり、カーソル名ではないため誤り。 - イ: CURRENT OF B
→ 正解。カーソルBの現在行を指定する正しい書き方。 - ウ: CURSOR B OF A
→ これはカーソル宣言の文法であり、WHERE句に入れる字句としては不適切。 - エ: CURSOR B OF A1
→ 同様にカーソル宣言の文法で誤り。A1は列名でありカーソル宣言に使わない。
補足コラム
SQLのカーソル操作では、UPDATEやDELETE文でカーソルの現在行を対象にする場合、WHERE句に「CURRENT OF カーソル名」を指定します。
これにより、カーソルが指している行を正確に更新・削除でき、主キーを直接指定する必要がなくなります。
これにより、カーソルが指している行を正確に更新・削除でき、主キーを直接指定する必要がなくなります。
FAQ
Q: なぜ主キー名をWHERE句に直接書かないのですか?
A: 主キー名だけではどの行を更新するか特定できないため、カーソルの現在位置を示す「CURRENT OF カーソル名」を使います。
A: 主キー名だけではどの行を更新するか特定できないため、カーソルの現在位置を示す「CURRENT OF カーソル名」を使います。
Q: 「CURRENT OF カーソル名」はどんな場面で使いますか?
A: カーソルでフェッチした行をUPDATEやDELETEで操作するときに使い、現在のカーソル位置を指定します。
A: カーソルでフェッチした行をUPDATEやDELETEで操作するときに使い、現在のカーソル位置を指定します。
関連キーワード: SQL, カーソル操作, CURRENT OF, UPDATE文, 主キー, WHERE句, データベース