既に存在するレコードを削除するDELETE文

テーブル上のレコードを削除するには、DELETE文を用います。

DELETE文の構文

DELETE FROM テーブル名;

この基本構文では、指定したテーブルからレコードをすべて削除します。
多くの場合、WHERE句によって削除するレコードを絞り込みます。

DELETE FROM テーブル名 WHERE 条件式;

条件式に合致する、つまり削除対象となるレコードが存在しなかった場合もエラーにはなりません。単にレコードが1件も削除されないだけです。

DELETE文の例

SQL
DELETE FROM meibo
WHERE id=1;

meiboテーブルからid=1のレコードを削除します。

DELETE文によってレコードを削除すると、その内容はテーブル上から完全に消えてしまいます。一般的なアプリケーションのような『UNDO』機能は無く、バックアップを取っていない限り復元はできません。よって、削除条件を間違えて削除すべきではないレコードを削除してしまわないように十分に注意する必要があります。

練習14

(1) ex_shohinテーブルから、priceが5000以上のレコードをすべて削除するSQLを記述しなさい。
※実際には条件に当てはまるレコードがないため何も削除されません。

※そのような場合でもエラーが出ないことを確認しましょう。

(2) ex_shohinテーブルから、id=1のレコードを削除するSQLを記述しなさい。
SELECT文と同じく、WHERE句にもっと複雑な条件を記述したり、BETWEENやINなどの演算子を使うこともできます。

INを使った例

SQL
DELETE FROM meibo WHERE id IN (1,3);

idが1または3であるレコードを削除します。
前の例と同様、条件に合致するレコードが存在しなくてもエラーにはなりません。

コメント

タイトルとURLをコピーしました