令和5年度 秋期 応用情報技術者試験 午前 問28
更新可能なビューを作成する SQL文はどれか。ここで,SQL文に現れる基底表は全て更新可能とする。
解答・解説
正解: ア. CREATE VIEW 高額商品(商品番号, 商品名, 商品単価)
AS SELECT 商品番号, 商品名, 商品単価 FROM 商品 WHERE 商品単価 > 1000
ビューに対する更新(INSERT、UPDATE、DELETE)が、基となる実表(基底表)に直接反映できるものを 更新可能なビュー と呼びます。
ビューが更新可能であるためには、ビューの行と基底表の行が 1対1に対応 している必要があります。したがって、以下の要素を含むSELECT文で定義されたビューは元の行が特定できなくなるため 更新不可 となります。
- DISTINCT(重複排除)
- GROUP BY 句や HAVING 句によるグループ化
- 集約関数(
SUM、AVG、MAX、MIN、COUNTなど) - 複数の表の結合(JOIN)や集合演算(UNIONなど)
各選択肢の解説
- ア(正解):単一の基底表(商品)から
WHERE句での条件抽出のみを行っており、集約処理や重複排除を含まないため、更新可能です。 - イ:
DISTINCTキーワードが含まれており、重複排除が行われるため元の行が特定できず、更新不可です。 - ウ:
GROUP BY句によるグループ化と、集約関数SUMが使用されているため、更新不可です。 - エ:集約関数
AVGが使用されており、ビューの1行が基底表の複数の行から計算された値となるため、更新不可です。