SQL│DELETE文でテーブルのデータ行を削除する(レコードの削除)

今回は、SQLのDELETE文を使ってテーブルのデータ行を削除する方法を説明します。

RDBMSを運営するうえで、データ行を丸ごと削除する機会はそれほど多くないのですが、誤って登録してしまった販売データや社員データなど、本来存在しないレコードが発生してしまった場合には、データ行を削除するDELETE文を実行する必要があります。

この記事では、DELETE文でテーブルのデータ行を削除する基本文法と、実際にMySQLとPostgreSQLでデータ行の削除を実行する実画像を用いて説明します。

目次

SQL_データの削除(DELETE文)

この記事で説明するDELETE文を使ったデータの削除は、以前の記事で作成したテーブルを使います。参考までに紹介しておきます。(記事内ではテーブル名をEmployeeで作成していますが、当記事ではテーブル名をWorkerに変更しています)

サンプルで使用するテーブル

当記事でSQLのDELETE文を実行するにあたっては、下記のテーブルを使います。このテーブルに対して、DELETE文を実行し、データを更新します。

テーブル名:Worker
(使用RDBMS:MySQL)

データ更新のDELETE文

RDBMS上に作成したテーブルのデータを削除するときには、[DELETE]というSQL文を実行します。

基本文法

–テーブル内の1行を削除
DELETE FROM テーブル名 WHERE キーの列名 = キー;

–テーブル内のすべてのデータ行を削除
DELETE FROM テーブル名;

実際のDELETE文

  • テーブル名・・・・Worker
  • 更新対象・・・・worker_idが10045

たとえば、テーブル[Worker]に登録されている「社員番号10045のデータ行を削除する場合」には、下記のようにSQL文を記述します。

DELETE FROM Worker WHERE worker_id = 10045;

WHEREがない場合は全件削除

前述したように、テーブル内の特定のデータ行を削除をする場合には、対象レコードを特定するためのWHERE区が必須です。

WHEREがない場合は、エラーが発生する訳ではなく、該当テーブルのすべてのデータ行が削除されますので、注意が必要です。

DELETE FROM Worker WHERE worker_id = 10046;--WHEREで特定しているSQL文
DELETE FROM Worker;--WHEREで特定していないSQL文
DELETE FROM Worker;
(WHEREがないため、Workerのが全レコードが削除されてしまった)

実例_MySQLのDELETE

実際のRDBMS、MySQLでDELETE文を実行してテーブルのデータ行を削除した実画像を紹介します。

DELETEの実行

DELETE FROM Worker WHERE worker_id = 10045;

実例_PostgreSQLのDELETE

実際のRDBMS、PostgreSQLでDELETE文を実行してテーブルのデータ行を削除した実画像を紹介します。

DELETEの実行

DELETE FROM Worker WHERE worker_id = 10045;

あとがき

今回は、RDBMSのテーブルからDELETE使ってデータ行を削除するSQL文について、記事にしました。

RDBMSは、Excel等の表計算ソフトとは異なり、セル単位でデータを削除することはできません。削除は、当記事で説明したDELETE文を使って行単位で実行することになります。

なお、テーブルを丸ごと削除する方法や、列を削除する方法については、下記の記事で説明していますので、必要に応じてご参照ください。

目次