ORACLE MASTER Silver SQL 26aiDMLとトランザクションオリジナル・公式資料照合難易度★★★☆☆
Oracle AI Database 26aiでemployees(emp_id PRIMARY KEY, dept_id, salary NUMBER)は(1,10,100)、(2,20,100)、raises(dept_id PRIMARY KEY, increment_amount NUMBER)は(10,20)だけである。次が成功した後のemp_id=1、2のsalaryの組はどれか。 UPDATE employees e SET salary = salary + (SELECT r.increment_amount FROM raises r WHERE r.dept_id = e.dept_id) WHERE EXISTS (SELECT 1 FROM raises r WHERE r.dept_id = e.dept_id);
A
120、NULL
WHERE EXISTSがない場合の空スカラー副問合せによるNULL更新と混同しています。社員2は更新対象ではありません。
B
120、120
社員2の部署20に対応する昇給データはありません。全社員へ同じ額を加算する文ではありません。
C
120、100★ 正解
社員1だけを更新し、対応する行がない社員2はWHEREで対象から外します。
D
100、100
部署10には副問合せで一致する行があり、社員1の更新が実行されます。
解説
EXISTSで対応する昇給行がある社員だけを対象にしています。社員1は20を加えて120、社員2は対象外で100のままです。raisesの主キーによって、適用対象の副問合せも複数行にはなりません。
根拠資料・確認情報
対応範囲:Oracle AI Database 26ai SQL Associate(1Z0-171-JPN)
資料確認日:2026-10-29
同じレッスンの問題
問題 1
Oracle AI Database 26aiでreview_a(amount NUMBER)、review_b(amount NUMBER)は空であり、トリガーや追加制約はない。次を1回成功させた後の各表の行数はどれか。
INSERT ALL
WHEN amount >= 50 THEN INTO review_a(amount) VALUES(amount)
WHEN amount >= 70 THEN INTO review_b(amount) VALUES(amount)
SELECT 75 AS amount FROM dual;
問題 2
Oracle AI Database 26aiでtarget_items(id PRIMARY KEY, price NUMBER)は(1,100)、(2,200)、source_itemsは(2,250)、(3,300)だけである。source_itemsのidも一意で、トリガーや別の更新はない。次が成功した後のtarget_itemsの行数とSUM(price)はどれか。
MERGE INTO target_items t
USING source_items s ON (t.id = s.id)
WHEN MATCHED THEN UPDATE SET t.price = s.price
WHEN NOT MATCHED THEN INSERT (id, price) VALUES (s.id, s.price);
問題 4
Oracle AI Database 26aiでt(id PRIMARY KEY, amount NUMBER)の(1,100)は既にCOMMIT済みである。同一セッションで次を順に実行し、全て成功した。他のトランザクション、DDL、トリガーはない。最後のamountはどれか。
UPDATE t SET amount = 110 WHERE id = 1;
SAVEPOINT after_first;
UPDATE t SET amount = 120 WHERE id = 1;
ROLLBACK TO after_first;
COMMIT;