きちんと予想通りのレコードが更新・削除の対象となっているか確認してからSQL文に組み込んだほうが安全だからです。
WHEREの条件が単純ならすぐに書けるかもしれません。しかしテーブル数が増えSQL文が複雑になってくると、SELECT文で事前に確かめることが必要です。
極端な例ですが
「九州で3文字の県、または2文字目に崎が入っている県を削除しなさい。」
というSQL文を考えて見ましょう。
ここでいきなりDELETE...と始めるのは初心者にとってとても難しく、もし違うレコードが削除されたら大変です。
まずはSELECT文でWHEREを使い、ちゃんと該当する都道府県が表示できるようにします。それでは試してみましょう。
【1】Accessのファイル「SampleDB.mdb」を起動し、「SQL練習」のSQLビュー画面を開いてください。
【2】まず「九州」ということを考えます。以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD BETWEEN 40 AND 47;
【3】九州の都道府県が表示されました。レコード数は8件です。
【4】次に「3文字の都道府県」という条件をプラスします。以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD BETWEEN 40 AND 47
and PREF_NAME like '???県';
「?」は任意の1文字と置き換わりますので、「???県」は3文字の後に県ということになります。
【4】九州で3文字の都道府県が表示されました。レコード数は1件です。
【5】最後に「または2文字目に崎が入っている県」という条件をプラスします。以下のSQL文を入力し、実行ボタン「!」をクリックします。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD BETWEEN 40 AND 47
and PREF_NAME like '???県'
or PREF_NAME like '?崎県';
【6】条件に一致するレコードが表示されました。レコード数は3件です。
'?崎県' は任意の1文字の後に「崎県」がきます。九州には長崎県や宮崎県以外に崎の付く県がありません。もし仮に○崎○○県という都道府県があるとしたら、正確には '?崎*県' と書いたほうがいいでしょう。*は任意の0文字以上です。
【7】SELECT文でWHEREの条件が正しいことができたら、DELETE文に組み込みます。
DELETE
FROM T01Prefecture
WHERE PREF_CD BETWEEN 40 AND 47
and PREF_NAME like '???県'
or PREF_NAME like '?崎県';
これで
「九州地区で3文字の県、または2文字目に崎が入っている県を削除しなさい。」
という条件が満たされました。
上記のSQLはきちんと動作します。実行するとレコードが消えてしまうので、試さなくてかまいません。
【8】「SQL練習」は保存しないで終了してください。
どうでしたか。すぐにDELETE文を作るより、SELECT文で試したほうが良い理由を感じていただけたと思います。UPDATE文でも要領は同じです。