更新可能なビュー
出典: 令和5年度 秋期 応用情報技術者試験 午前 問28 (IPA)
更新可能なビューを作成する 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 受注
正解と解説を見る
正解: ア
- ア: 1 つの表から WHERE で行を選んでいるだけなので、ビューの各行が基底表の 1 行に対応し、更新可能です。
- イ: DISTINCT で重複を除いているので、ビューの 1 行が基底表のどの行に対応するか決まらず、更新できません。
- ウ: GROUP BY と SUM で集計しているので、ビューの 1 行が基底表の複数行をまとめたものになり、更新できません。
- エ: AVG で集計しているので、ビューの値が基底表のどの行に対応するか決まらず、更新できません。
ポイント
- ビューを更新すると、元の表 (基底表) の行を書き換えることになります。そのため、ビューの 1 行が基底表のどの 1 行に対応するかが決まる 場合だけ更新できます。
- DISTINCT (重複の除去)、GROUP BY や 集合関数 (SUM, AVG など) を使ったビューは、1 行が基底表の複数行をまとめたものになるので更新できません。