受講料が最大70%OFF 受講料が最大70%OFF

データベースの基本操作として、データの「追加」「更新」「削除」「選択」が挙げられます。

本記事では、データの「削除」方法について、基本的な操作からサンプルを交えた具体的な解説までを行っていきたいと思います。

ポテパンダの一言メモ

今回はMySQLを使用したサンプルを掲載します。
データベース毎にSQLの記述方法が異なることもありますので、利用するデータベースに対応したSQLに適宜読み替えを行ってください。

SQLでのデータ削除の基本


SQLでのデータ削除において、最も基本となる「DELETE文」の使い方についてご紹介していきたいと思います。

記述法

最も基本となる記述方法です。

ただし、条件指定せずにDELETE文を記述すると指定したテーブルの対象データが全て削除されますので、注意が必要です。

DELETE FROM テーブル名;

サンプル

実際にサンプルで動作確認してみましょう。

サンプルとして下記のデータを用意しています。

test1

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田太郎      |   30 |
|    2 | 山田花子      |   25 |
|    3 | 田中一郎      |   20 |
+------+--------------+------+

実行するSQL文は下記となります。

DELETE FROM test1;

SELECT文を実行すると下記のように表示されます。

Empty set (0.00 sec)

SQLでのデータ削除 条件指定


では特定のデータだけを削除したい場合、どのように条件指定するのかというと「WHERE句」を利用することになります。

基本的にデータベースでDELETE処理を行う場合には、WHERE句の指定はほぼ必須と考えて問題ありません。

記述法

DELETE文のWHERE句以降の記述方法は、SELECT文の記述方法と同じです。

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

条件式には「=」だけでなく「LIKE」や「BETWEEN」を用いた条件指定も可能です。

サンプル

実際にサンプルデータに条件指定で削除処理を実施してみましょう。

+------+-----------------+------+
| id   | name            | age  |
+------+-----------------+------+
|    1 | 山田太郎         |   30 |
|    2 | 山田花子         |   25 |
|    3 | 田中一郎         |   20 |
|    4 | 清水次郎         |   40 |
|    5 | 大山田五郎       |   45 |
+------+-----------------+------+

今回は苗字が「山田」のデータを削除するSQLを作成しました。

DELETE FROM test1 WHERE name like "山田%";

実行した後のデータを確認すると、苗字が「山田」のデータのみが削除出来ていることをご確認頂けます。

+------+-----------------+------+
| id   | name            | age  |
+------+-----------------+------+
|    3 | 田中一郎         |   20 |
|    4 | 清水次郎         |   40 |
|    5 | 大山田五郎       |   45 |
+------+-----------------+------+

SQLでのデータ削除 件数指定


SQLでのデータ削除には件数指定を行うことも可能です。

一般的には「ORDER BY」句との組み合わせにより、古い日付のデータを何件削除するといった用途で利用されます。

記述法

件数指定の記述には「LIMIT句」を利用します。

ORDER BY句に関しては、並び替えを行うために利用されます。

DELETE FROM テーブル名 (ORDER BY カラム名, カラム名 ...) LIMIT 件数;

サンプル

サンプルでは、購入日の古いものから5件のデータを削除するSQLを作成してみましょう。

今回利用するサンプルデータは下記の通りです。

+---------------+-----------------------------+---------+
| purchase_date | product_name                | price   |
+---------------+-----------------------------+---------+
| 2020-08-01    | 靴                          |    5000 |
| 2020-08-20    | かばん                       |   10000 |
| 2020-08-15    | 服                          |    3000 |
| 2020-08-10    | コンサートチケット             |    6000 |
| 2020-08-27    | 商品券                       |    3000 |
| 2020-08-31    | テレビ                       |  100000 |
| 2020-08-02    | 車                          | 1000000 |
| 2020-08-23    | 水                          |     100 |
| 2020-08-17    | 化粧品                       |    1500 |
| 2020-08-22    | 携帯電話                     |   80000 |
+---------------+-----------------------------+---------+

SQLは下記となります。

DELETE FROM test1 ORDER BY purchase_date LIMIT 5;

実行した結果、購入日の古い5件のデータが削除されていることをご確認頂けます。

+---------------+--------------+--------+
| purchase_date | product_name | price  |
+---------------+--------------+--------+
| 2020-08-20    | かばん        |  10000 |
| 2020-08-27    | 商品券        |   3000 |
| 2020-08-31    | テレビ        | 100000 |
| 2020-08-23    | 水           |    100 |
| 2020-08-22    | 携帯電話      |  80000 |
+---------------+--------------+--------+

SQLでのデータ全件削除


上述したように、SQLでのデータ全件削除にはDELETE文で条件を指定しないという方法もありますが、一般的には「TRUNCATE文」が利用されます。

DELETE文との違いは、DELETE文がデータ1件1件削除するのに対し、TRUNCATE文ではテーブルを削除し再作成するため、データ量によっては処理スピードが圧倒的に早くなります。

記述法

TRUNCATE文の記述方法は下記となります。

TRUNCATE TABLE テーブル名;

サンプル

ではLIMIT句のサンプルで残ったデータをTRUNCATE文で削除してみましょう。

TRUNCATE TABLE test1;

実行した後にSELECT文を実行すると下記のように表示され、データが削除されたことをご確認頂けます。

Empty set (0.01 sec)

さいごに:SQLでデータを削除する際は細心の注意を払おう!


本記事では、SQLでデータを削除する方法について、DELETE文とTRUNCATE文の使い方をご紹介してきました。

SQLでのデータ削除を行う際には、細心の注意を払った上で実施することが大切です。

データベースから削除したデータは基本的には復元することが出来ません。

バックアップを取得しておくことはもちろん、実行する前に本当に間違いがないかを入念に確認し、処理を実行するように心がけましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。