今回は、SQLのDELETE文を使ってテーブルのデータ行を削除する方法を説明します。
RDBMSを運営するうえで、データ行を丸ごと削除する機会はそれほど多くないのですが、誤って登録してしまった販売データや社員データなど、本来存在しないレコードが発生してしまった場合には、データ行を削除するDELETE文を実行する必要があります。
この記事では、DELETE文でテーブルのデータ行を削除する基本文法と、実際にMySQLとPostgreSQLでデータ行の削除を実行する実画像を用いて説明します。
SQL_データの削除(DELETE文)
この記事で説明するDELETE文を使ったデータの削除は、以前の記事で作成したテーブルを使います。参考までに紹介しておきます。(記事内ではテーブル名をEmployeeで作成していますが、当記事ではテーブル名をWorkerに変更しています)
サンプルで使用するテーブル
当記事でSQLのDELETE文を実行するにあたっては、下記のテーブルを使います。このテーブルに対して、DELETE文を実行し、データを更新します。
データ更新の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文
実例_MySQLのDELETE
実際のRDBMS、MySQLでDELETE文を実行してテーブルのデータ行を削除した実画像を紹介します。
DELETEの実行
実例_PostgreSQLのDELETE
実際のRDBMS、PostgreSQLでDELETE文を実行してテーブルのデータ行を削除した実画像を紹介します。
DELETEの実行
あとがき
今回は、RDBMSのテーブルからDELETE使ってデータ行を削除するSQL文について、記事にしました。
RDBMSは、Excel等の表計算ソフトとは異なり、セル単位でデータを削除することはできません。削除は、当記事で説明したDELETE文を使って行単位で実行することになります。
なお、テーブルを丸ごと削除する方法や、列を削除する方法については、下記の記事で説明していますので、必要に応じてご参照ください。