今回は、Silverの「開発/SQL - SQLコマンド(DELETE文)」からの出題です。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2017年7月31日
DELETE文の基本的な構文は
DELETE FROM テーブル名 ((AS) テーブル別名) WHERE 条件式
です。
FROMは必須なのでBはエラーになります。
SELECT文とは違い、FROM句にカンマ区切りで複数のテーブルを並べることはできません。従ってCもエラーになります。
AのFROM句の t1.table1 t2 ですが、t1というスキーマ内にあるtable1というテーブルを削除の対象とし、t1.table1をt2という別名で参照する、という意味です。WHERE句の a = b は列aの値と列bの値が等しければ削除する、ということなので、そのような名前のスキーマ、テーブル、および列が存在して、aとbが比較可能ならエラーにはなりません。
DはWHERE句がありませんが、この場合はtable1のすべての行が削除されます。psqlから実行すると、デフォルトではROLLBACKできませんので、十分に注意してください。
EはWHERE句にSELECT文がありますが、table1の列aの値が、括弧内のSELECT文が返した値の集合の中に含まれる場合について、それらの行をtable1から削除する、ということになります。従って、table1、table2にそれぞれ列a、xが存在して、aとxが比較可能ならエラーにはなりません。
従って、正解はBとCです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.