過去問解きまくり研究所 ホーム

平成23年度 特別 午前Ⅱ 問8

データ操作

ビューに関する問題

“取引先”表,“商品”表,“注文”表の 3 表を基底表とするビュー“注文 123”を操作する SQL 文のうち,実行できるものはどれか。ここで,各表の列のうち下線のあるものを主キーとする。

表(原典の実線の下線は …、破線の下線は〔破線の下線〕で表した):

取引先

取引先ID名称住所
111中央貿易東京都中央区
222上野商会東京都台東区
333目白商店東京都豊島区

商品

商品番号商品名価格
111スパナ1,000
123レンチ1,300
313ドライバ800

注文

注文番号注文日取引先ID商品番号数量
12011-04-201111113
22011-04-212221234
32011-04-221113133
42011-04-233331232

〔ビュー“注文 123”の定義〕

CREATE VIEW 注文123 AS
  SELECT 注文番号, 取引先.名称 AS 取引先名, 数量
    FROM 注文, 取引先, 商品
    WHERE 注文.商品番号 = '123'
      AND 注文.取引先ID = 取引先.取引先ID
      AND 注文.商品番号 = 商品.商品番号
答えと解説を見る

✓ これが正解エUPDATE 注文123 SET 数量 = 3 WHERE 取引先名 = '目白商店'

解説

ビューの列名だけで書かれ、列数の問題も無い UPDATE 文が実行できます。

ビュー“注文123”がもつ列は、注文番号、取引先名、数量の三つだけです。ビューへの SQL 文は、この三つの列名で書かれていなければ実行できません。数量を3に更新し、取引先名が目白商店の行を対象にする UPDATE 文は、ビューの列だけで条件と更新先を書いています。表を当てはめると、商品番号123の注文は注文番号2と4で、目白商店は取引先ID333なので、注文番号4の1行が該当し、その数量は注文表の1行に対応します。ビューへの操作を見るときは、まず使っている列名がビュー定義の SELECT 句にあるかを確かめると、多くの選択肢が絞れます。

ほかの選択肢はなぜ違うのか

出典:平成23年度 特別 データベーススペシャリスト試験 午前Ⅱ 問8

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)