Webサイト制作コースのお申し込みはこちら

SQLでデータ削除する方法

SQLでテーブルを作成したり、データを挿入することはよく行う操作方法です。

また、データ削除することも合わせてよく行われる操作の一つでしょう。

この記事では、SQLでデータやテーブルを「削除」する方法について解説します。

まず、ここではデータ削除する方法について見ていきましょう。

データを削除する際には、次の2つの構文が使用可能です。

  1. DELETE構文
  2. TRUNCATE構文

1つずつ使い方を確認してみましょう。

(1)DELETE構文

DELETE構文は、テーブル内にあるデータ・レコードを削除する構文です。

後述する WHERE句 や ORDER BY句 と組み合わせて、特定のデータだけを削除することもできます。

基本的なSQL文の記述方法は次の通りです。

DELETE FROM テーブル名;

では、実際に操作して確認してみましょう。

確認するために、次のテーブル・データを用意しました。

mysql> SELECT * FROM sample_table;
+------+--------+
| id   | name   |
+------+--------+
|    1 | Satou  |
|    2 | Abe    |
|    3 | Tanaka |
|    4 | Itou   |
|    5 | Kishi  |
+------+--------+
5 rows in set (0.00 sec)

この sample_tableテーブル のデータを削除してみましょう。

次のように記述します。

mysql> DELETE FROM sample_table;
Query OK, 5 rows affected (0.00 sec)

上記のように、「Query OK」と表示されればデータの削除ができました。

念のため、テーブル内のデータを確認してみましょう。

mysql> SELECT * FROM sample_table;
Empty set (0.00 sec)

「Empty set」と表示されており、テーブル内のデータ・レコードがないことがわかります。

WHERE句 と組み合わせて使う方法は、「(1)WHERE句で複数削除する」で解説しますね。

ORDER BY句 と組み合わせて使う方法は、「(2)ORDER BYで複数削除する」で解説します。

(2)TRUNCATE構文

TRUNCATE構文も、テーブル内にあるデータ・レコードを削除する構文です。

DELETE構文とは異なり、WHERE句 で条件指定ができません

そのため、テーブル内のデータはすべて削除されます。

SQL文の記述方法は次の通りです。

TRUNCATE TABLE テーブル名;

DELETE構文と記述方法は同じで、FROM句の後ろにテーブル名を記述しましょう。

TRUNCATE構文も実際に操作して確認してみます。

mysql> TRUNCATE TABLE sample_table;
Query OK, 0 rows affected (0.04 sec)

mysql> SELECT * FROM sample_table;
Empty set (0.00 sec)

上記のように、テーブル内のデータがすべて削除されました。

テーブルを削除する方法【DROP TABLE】

ここまで、SQLでテーブル内のデータ・レコードを削除する方法を紹介しました。

次に、テーブルを削除する方法について見ていきましょう。

テーブルを削除するには DROP TABLE構文 を使います。

記述方法は次の通りです。

DROP TABLE テーブル名;

DELETE構文 や TRUNCATE構文 と使い方は同じく、DROP TABLE の後ろに削除したいテーブル名を記述します。

では、先ほど作成した sample_tableテーブル を削除してみましょう。

次のように記述できます。

DROP TABLE sample_table;

上記のSQL文を実行してテーブルを確認してみると、ちゃんと削除されていることがわかります。

mysql> DROP TABLE sample_table;
Query OK, 0 rows affected (0.10 sec)

mysql> SELECT * FROM sample_table;
ERROR 1146 (42S02): Table 'mydb.sample_table' doesn't exist

では次に、削除を複数同時に行う方法について見ていきましょう。

SQLで削除を複数同時に行う【WHERE/ORDER BY】

ここまで、データ・レコードとテーブルを削除する方法を紹介しました。

削除するときに「指定した条件で複数個、削除したい」という場合もあるでしょう。

また、「テーブルを複数同時に削除したい」場合もありますよね。

ここでは、複数のデータ・レコード、テーブルを削除する方法について、次の順番で解説します。

  1. WHERE句で複数削除する
  2. ORDER BYで複数削除する
  3. テーブルを複数削除する

1つずつ見ていきましょう。

(1)WHERE句で複数削除する

まずは、WHERE句 を使って指定した条件に当てはまるデータを削除してみましょう。

sample_tableテーブル の構成を、次のように少し変えてみました。

mysql> SELECT * FROM sample_table;
+------+--------+-------+------------+
| id   | name   | class | dt         |
+------+--------+-------+------------+
|    1 | Satou  |     1 | 2020-10-01 |
|    2 | Abe    |     1 | 2020-10-04 |
|    3 | Tanaka |     2 | 2020-10-17 |
|    4 | Itou   |     2 | 2020-10-21 |
|    5 | Kishi  |     1 | 2020-10-28 |
+------+--------+-------+------------+
5 rows in set (0.01 sec)

このテーブル内にある、dtカラム の値が「2020-10-10」以前のデータだけ削除してみましょう。

次のように記述できます。

DELETE FROM sample_table WHERE dt < '2020-10-10';

先ほど解説したように、TRUNCATE構文 は WHERE句 が使えないので、ここでは DELETE構文を使いましょう。

上記のSQL文を実行してテーブルのデータを確認してみると、次のようになるはずです。

mysql> DELETE FROM sample_table WHERE dt < '2020-10-10';
Query OK, 2 rows affected (0.01 sec)

mysql> SELECT * FROM sample_table;
+------+--------+-------+------------+
| id   | name   | class | dt         |
+------+--------+-------+------------+
|    3 | Tanaka |     2 | 2020-10-17 |
|    4 | Itou   |     2 | 2020-10-21 |
|    5 | Kishi  |     1 | 2020-10-28 |
+------+--------+-------+------------+
3 rows in set (0.00 sec)

ちゃんと条件に当てはまるデータが複数削除できました!

(2)ORDER BYで複数削除する

次に、ORDER BYでデータを複数削除する方法をみていきましょう。

ORDER BY句 と LIMIT句 を組み合わせることで、指定したカラムの値を昇順か降順に並び替えた状態でデータの削除が可能です。

では、sample_tableテーブル の日付が古い順から3件のデータ・レコードを削除してみましょう。

次のように記述します。

DELETE FROM sample_table ORDER BY dt LIMIT 3;

上記のSQL文を実行後、テーブルを確認してみると次のようになっているはずです。

mysql> SELECT * FROM sample_table;
+------+-------+-------+------------+
| id   | name  | class | dt         |
+------+-------+-------+------------+
|    4 | Itou  |     2 | 2020-10-21 |
|    5 | Kishi |     1 | 2020-10-28 |
+------+-------+-------+------------+
2 rows in set (0.01 sec)

逆に、新しい日付から順番に3件削除したい場合は、次のように「DESC」を使えばOKです。

DELETE FROM sample_table ORDER BY dt DESC LIMIT 3;

実行結果は省略します。

(3)テーブルを複数削除する

テーブルを複数同時に削除したい場合は、DROP TABLE構文 のテーブル名をカンマ区切りで複数記述すればOKです。

次のようになります。

DROP TABLE テーブル名1, テーブル名2, テーブル名3, …;

こちらも実行結果は省略しますが、ちゃんと指定したテーブルが削除できます。

まとめてテーブルを削除したい場合に便利なので、覚えておきましょう!

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

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

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

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

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

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

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

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

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

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

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