ホーム > データベーススペシャリスト試験 > 2013年
データベーススペシャリスト試験 2013年 午前2 問11
三つの表取引先、商品、注文基底表上に注文123操作をするSQL文のうち、実行できるものはどれか。ここで、各表の列のうち下線のあるものは主キーである。

ア:
DELETE FROM 注文123 WHERE 取引先ID = '111'
イ:
INSERT INTO 注文123 VALUES (8, '目白商店', 'レンチ', 3)
ウ:
SELECT 取引先.名称 FROM 注文123
エ:
UPDATE 注文123 SET 数量 = 3 WHERE 取引先名='目白商店'
(正解)解説
ビュー「注文 123」の性質を整理
CREATE VIEW 注文123 AS
SELECT 注文.注文番号,
取引先.名称 AS 取引先.名称, -- 取引先表の列を別名無しで見出しに残す
注文.数量
FROM 注文
JOIN 取引先 ON 注文.取引先ID = 取引先.取引先ID
JOIN 商品 ON 注文.商品番号 = 商品.商品番号
WHERE 注文.商品番号 = '123';
- 基表を 3 つ結合した複合ビュー
→ SQL-92 標準では 更新系 (INSERT / UPDATE / DELETE) は不可
(INSTEAD OF トリガ等の特別設定が無いかぎり) - 列構成 は
- 注文番号
- 取引先.名称(列名にドットを含むが、ビュー列として存在)
- 数量
読み取り専用ビューとしては SELECT は自由に実行できる。
各 SQL 文の可否
結論
実際に実行できるのは ビューに対する単純な読み取り (SELECT) だけ。
したがって正しい選択肢は ウ である。
したがって正しい選択肢は ウ である。