SELECTで確認することが重要

WHEREで範囲を指定すると、レコードをまとめて更新・削除することができます。その場合はあらかじめSELECT文でWHEREの条件を試すことが大事です。

きちんと予想通りのレコードが更新・削除の対象となっているか確認してからSQL文に組み込んだほうが安全だからです。

WHEREの条件が単純ならすぐに書けるかもしれません。しかしテーブル数が増えSQL文が複雑になってくると、SELECT文で事前に確かめることが必要です。

極端な例ですが
「九州で3文字の県、または2文字目に崎が入っている県を削除しなさい。」
というSQL文を考えて見ましょう。

ここでいきなりDELETE...と始めるのは初心者にとってとても難しく、もし違うレコードが削除されたら大変です。

まずはSELECT文でWHEREを使い、ちゃんと該当する都道府県が表示できるようにします。それでは試してみましょう。


【1】Accessのファイル「SampleDB.mdb」を起動し、「SQL練習」のSQLビュー画面を開いてください。

access-sql19.gif


【2】まず「九州」ということを考えます。以下のSQL文を入力し、実行ボタン「!」をクリックします。

SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD BETWEEN 40 AND 47;

access-sql64.gif


【3】九州の都道府県が表示されました。レコード数は8件です。

access-sql65.gif


【4】次に「3文字の都道府県」という条件をプラスします。以下のSQL文を入力し、実行ボタン「!」をクリックします。

SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD BETWEEN 40 AND 47
and PREF_NAME like '???県';

access-sql66.gif

「?」は任意の1文字と置き換わりますので、「???県」は3文字の後に県ということになります。


【4】九州で3文字の都道府県が表示されました。レコード数は1件です。

access-sql67.gif


【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 '?崎県';

access-sql68.gif


【6】条件に一致するレコードが表示されました。レコード数は3件です。

access-sql69.gif

'?崎県' は任意の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文でも要領は同じです。

スポンサードリンク

スポンサードリンク






Access SQL初心者入門講座TOPへ