基本情報技術者試験 ap-2023r05a-a 午前 問28: 更新可能なビューを作成する SQL 文はどれか。ここで,SQL 文中に現れる基底表は全て更新可能とする。

ap-2023r05a-a
Q 2828 / 80
更新可能なを作成する SQL 文はどれか。ここで,SQL 文中に現れる基底表は全て更新可能とする。

問題本文

更新可能なビューを作成する 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 受注

正解

. CREATE VIEW 高額商品(商品番号,商品名,商品単価) AS SELECT 商品番号,商品名,商品単価 FROM 商品 WHERE 商品単価>1000

解説

ビューが更新可能(挿入・更新・削除できる)になる条件を問う問題です。ビューを通した更新は,最終的に基底表のどの行のどの値を変えればよいかが一意に特定できる必要があります。そのため,集約関数(SUM・AVG等)やGROUP BY,重複排除のDISTINCTを含むビューは,元の行と1対1で対応づかなくなり更新できません。選択肢アは単純な選択(WHERE)と射影だけで基底表の行と1対1に対応するため更新可能であり,正解はアです。

選択肢ごとの解説

  • .正しい。集約やGROUP BY,DISTINCTを含まず,単純な行の絞り込み(WHERE)と列の取り出しだけなので,基底表の行と1対1に対応し更新可能です。
  • .DISTINCTで重複を排除しているため,ビューの1行が基底表の複数行に対応し得て更新対象を一意に特定できず,更新できません。
  • .SUMによる集約とGROUP BYを含むため,ビューの値が複数行の合計となり元の行を特定できず,更新できません。
  • .AVGによる集約を含むため,ビューの値が全行の平均となり元の個々の行を特定できず,更新できません。

ap-2023r05a-a過去問一覧へ戻る・問28

基本情報技術者試験 の iOS アプリ版

アプリ版なら、よりスムーズに動作し、
スワイプで問題遷移ができます。

基本情報技術者試験 合格.dev を App Store でダウンロード