戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2023年 秋期 午前228


問題文

更新可能なビューを作成する SQL文はどれか。ここで、SQL文中に現れる基底表は全て更新可能とする。

選択肢

CREATE VIEW 高額商品(商品番号、商品名、 商品単価)
 AS SELECT 商品番号、商品名、 商品単価 FROM 商品 WHERE 商品単価 > 1000
(正解)
CREATE VIEW 受注商品(商品番号)
 AS SELECT DISTINCT 商品番号 FROM 受注
CREATE VIEW 商品受注(商品番号、 受注数量)
 AS SELECT 商品番号、 SUM (受注数量) FROM 受注 GROUP BY 商品番号
CREATE VIEW 商品平均受注数量(平均受注数量)
 AS SELECT AVG (受注数量) FROM 受注

更新可能なビューを作成する SQL文はどれか【午前2 解説】

要点まとめ

  • 結論:アのビューは更新可能であるため正解です。
  • 根拠:更新可能なビューは集約関数やDISTINCTを含まず、基底表の単純な選択で構成されている必要があります。
  • 差がつくポイント:集約関数やDISTINCTを使うとビューは更新不可となるため、SQL文の構造を正確に理解することが重要です。

正解の理由

アのSQL文は「商品」テーブルから商品番号、商品名、商品単価を単純に抽出し、WHERE句で条件を付けているだけです。基底表が更新可能であれば、このビューも更新可能です。一方、他の選択肢はDISTINCTやSUM、AVGなどの集約関数を使っており、これらはビューの更新を制限します。

よくある誤解

集約関数やDISTINCTを使っても更新可能なビューになると誤解しがちですが、これらはビューの更新を不可能にします。単純なSELECT文であることが更新可能の条件です。

解法ステップ

  1. ビューの定義を確認し、集約関数(SUM、AVGなど)が使われているか確認する。
  2. DISTINCT句が使われているかをチェックする。
  3. 基底表が単純に選択されているかを判断する。
  4. 条件句(WHERE)は更新可能ビューに影響しないため、無視してよい。
  5. 以上の条件を満たすSQL文を選ぶ。

選択肢別の誤答解説

  • イ: DISTINCTを使っているため、更新可能なビューではありません。
  • ウ: SUMという集約関数を使っているため、更新不可です。
  • エ: AVGという集約関数を使っているため、更新不可です。

補足コラム

更新可能なビューとは、ビューを通じて基底表のデータをINSERT、UPDATE、DELETEできるビューのことです。一般的に、単純なSELECT文(集約関数やDISTINCTを含まない)で作成されたビューが更新可能とされます。複雑なビューは更新不可となり、ビューの更新を試みるとエラーになります。

FAQ

Q: なぜ集約関数を使うとビューは更新不可になるのですか?
A: 集約関数は複数行のデータを1行にまとめるため、どの基底表の行を更新すべきか特定できなくなるからです。
Q: WHERE句があってもビューは更新可能ですか?
A: はい。WHERE句は単に表示する行を絞るだけなので、基底表が更新可能ならビューも更新可能です。

関連キーワード: 更新可能ビュー、SQLビュー、集約関数、DISTINCT, 基底表、CREATE VIEW
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について