データの削除(DELETE)

INSERTコマンドで登録したデータを削除するにはDELETEコマンドを使用します。

DELETEコマンド

DELETEコマンドにより、テーブルのデータを削除することができます。基本的な構文は以下になります。

DELETEコマンドの基本構文
DELETE FROM テーブル名 WHERE 条件式;

DELETEコマンドで削除するのは行(レコード)単位です。例えば、一部の列だけを削除すると言ったことはできません。

では、実際にDELETEコマンドを発行してデータを削除してみましょう。

testdb=# DELETE FROM Staff WHERE id='0002';

WHERE句で削除する対象の行を指定します。上記例では、id列が「0002」の行を削除しています。

では、id列「0002」の行が削除されているかどうか、SELECTコマンドで確認してみます。

testdb=# SELECT * FROM Staff;
  id  |    name    | age
------+------------+-----
 0001 | 山田太郎   |  46
 0003 | 斉藤達弘   |  46
 0004 | 桜井さつき |  46
(3 行)

対象行は存在せず、正しく削除されていることが確認できます。

全行を削除する

UPDATEコマンドと同じく、WHERE句の指定がないとテーブル内の全ての行が削除されます。

例えば、以下のDELETEコマンドを発行してみましょう。

testdb=# DELETE FROM Staff;

上記コマンド発行後、SELECTコマンドでデータを確認すると、データが1件も登録されていないことがわかります。

testdb=# SELECT * FROM Staff;
 id | name | age
----+------+-----
(0 行)

意図して、全行削除する場合は良いですが、WHERE句の記述を忘れて誤って全てのデータを削除してしまったということにならないよう十分に注意しましょう。本番稼働中のシステムでこのようなミスをしてしまっては目も当てられません。

UPDATEやDELETEコマンドはある意味、危険なコマンドであるということを念頭に置いておくことが大切です。