★悩み★
・MySQLに格納したデータ(レコード)を削除はできる?
・DELETEの末尾に指定するWHERE/ORDER/LIMITって何?
・DELETEを使ってMySQLのデータ削除する際に気を付けることってある?
こういった「悩み」に答えます。
★本記事の内容★
➀ MySQLのDELETEとは?
➁ DELETEを使ってMySQLのデータを削除する方法
➂ DELETEをMySQLで使う上での注意点
これからご紹介する「MySQLのDELETEでデータ削除時に多用する4パターン」を実践したことで、筆者は15分以内でDELETEを用いてMySQLに格納されたデータ(レコード)を削除できました。
記事の前半では「そもそもMySQLのDELETEとは?」を紹介します。
記事の後半では「MySQLのデータ削除する際によく使うDELETEの使い方(構文や事例)」を紹介します。
この記事を読み終えることで、「DELETEを使いMySQLに格納されたデータ(レコード)を削除できる」状態になります。
★MySQLとは★
MySQLは、Oracle社が開発しているオープンソースのデータベース管理システムです。MySQLは、YoutubeやWikipediaなどの大規模なサービスに利用されています。
参照:MySQLとは(MySQLの公式サイト)
ちなみに、「MySQLに格納したデータ(レコード)を更新する方法」を知りたい方は、以下の記事をご覧ください。
MySQLのDELETEとは?
「MySQLのDELETEとは?」に関してご紹介します。
★MySQLのDELETE関連の情報★
・DELETEとは?(MySQL内のデータ削除するためのコマンド)
・MySQLで使うDELETEの基本的な構文
以降で、上記「MySQLのDELETE関連の情報」の各項目に関してご説明します。
DELETEとは?(MySQL内のデータ削除するためのコマンド)
「DELETEとは?(MySQL内のデータ削除するためのコマンド)」に関して解説します。
MySQLでよく使うコマンドの1つとして、「DELETE」があります。
MySQLで「DELETE」を使うことで、以下のデータ削除を実現できます。
★MySQLでDELETEを使い実現できること★
・MySQLの指定テーブルに格納された全データを削除
・テーブルから任意件数のデータを削除
・条件に一致するデータをテーブルから削除
・複数条件に一致するデータをテーブルから削除
・上位と下位のデータを削除
上記のように「MySQLのデータ(レコード)を削除したい」という場合は、「DELETE」を使います。
以上が、「DELETEとは?(MySQL内のデータ削除するためのコマンド)」となります。
MySQLで使うDELETEの基本的な構文
「MySQLで使うDELETEの基本的な構文」に関して解説します。
MySQLにおける「DELETE」の基本的な書き方に関して説明しますね。
MySQLでデータ削除をする際に利用する「DELETE」の構文は、以下となります。
★MySQLにおけるDELETEのリファレンス★
・機能
指定したテーブル内のデータを削除する
・使い方
DELETE FROM テーブル名 条件などのオプション;
・例
DELETE FROM user;
・実行結果
userテーブルに格納された全データを削除する
・参照
DELETEのリファレンス(MySQL公式サイト)
WHERE条件などのオプションを指定したDELETEに関しては、本記事の後半で解説します。
以上が、「MySQLで使うDELETEの基本的な構文」となります。
MySQLのテーブル内のデータ(レコード)を削除したい場合、「DELETE」を使いましょう。
DELETEを使ってMySQLのデータを削除する方法
「DELETEを使ってMySQLのデータを削除する方法」に関してご紹介します。
★MySQLでのDELETEの使い方:データ削除時に多用する4パターン★
・全データを削除
・削除するデータの数を指定(LIMIT)
・並び順(降順/昇順)を指定して削除(ORDER BY)
・条件に一致するデータのみを削除(WHERE)
MySQLのデータを削除する場合、上記4パターンのDELETEを多用します。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年6月14日
動作確認済み環境:CentOS Linux release 7.7.1908 (Core)
以降で、上記「MySQLでのDELETEの使い方:データ削除時に多用する4パターン」の各項目に関してご説明します。
以降では、MySQL内にデータ格納された前提で、各DELETEのパターンをご紹介します。
MySQLのインストール/セットアップ/データ追加をされていない方には、以下の記事がオススメです。
>> MySQLのインストール/セットアップ/データ追加する手順
全データを削除
「全データを削除」に関して解説します。
DELETEを使えば、MySQLの指定したテーブルに格納された全てのレコード(データ)を削除できます。
MySQLの指定テーブル内のデータを全て削除したい場合のDELETEの構文は、以下となります。
★DELETEの構文:全データを削除したい場合★
・使い方
DELETE FROM テーブル名;
・例
DELETE FROM user;
・実行結果
userテーブルに格納された全データを削除する
それでは、MySQLの指定テーブルに格納された全データを削除するために、以下のDELETEを実行してみましょう。
mysql> select * from user;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 2 | tom | america |
| 3 | bob | america |
| 4 | ken | japan |
+------+------+---------+
3 rows in set (0.00 sec)
mysql> DELETE FROM user;
Query OK, 3 rows affected (0.00 sec)
mysql> select * from user;
Empty set (0.01 sec)
mysql>
コマンド実行後、「Empty set」が表示された場合、「正常にDELETEで全データ(レコード)を削除できた」と判断できます。
以上が、「全データを削除」となります。
削除するデータの数を指定(LIMIT)
「削除するデータの数を指定(LIMIT)」に関して解説します。
DELETEとLIMITを使えば、MySQLで削除するデータの数を指定できます。
MySQLで「件数を指定したデータ削除」をしたい場合のDELETEの構文は、以下となります。
★DELETEの構文:データの件数を指定したデータ削除の場合★
・使い方
DELETE FROM テーブル名 LIMIT 件数;
・例
DELETE FROM user LIMIT 2;
・実行結果
userテーブルに格納された2件のデータを削除する
それでは、件数を指定したデータ削除をするために、以下のDELETEを実行してみましょう。
mysql> select * from user;
+------+------+-----------+
| id | name | address |
+------+------+-----------+
| 1 | hero | kakedashi |
| 3 | bob | america |
| 4 | ken | japan |
+------+------+-----------+
3 rows in set (0.00 sec)
mysql> DELETE FROM user LIMIT 2;
Query OK, 2 rows affected (0.00 sec)
mysql> select * from user;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 4 | ken | japan |
+------+------+---------+
1 row in set (0.00 sec)
mysql>
コマンド実行後、「データの件数が2件」減っていた場合、正常に「指定した数だけのデータを削除できた」と判断できます。
以上が、「削除するデータの数を指定(LIMIT)」となります。
並び順(降順/昇順)を指定して削除(ORDER BY)
「並び順(降順/昇順)を指定して削除(ORDER BY)」に関して解説します。
DELETEとORDERを使えば、MySQLで並び順を指定した削除を実現できます。
MySQLで「並び順を指定したデータ削除」をしたい場合のDELETEの構文は、以下となります。
★DELETEの構文:並び順を指定したデータ削除をしたい場合★
・使い方
DELETE FROM テーブル名 ORDER BY カラム名 ASC/DESC;
・例
DELETE FROM user ORDER BY id ASC;
・実行結果
idカラムを昇順に並び替えてからデータを削除する
それでは、並び順を指定してデータを削除するために、以下のDELETEを実行してみましょう。
↓↓ 昇順に並び替えた上でDELETE ↓↓
mysql> select * from user;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 1 | hero | japan |
| 2 | bob | america |
| 3 | tom | america |
| 4 | ken | japan |
+------+------+---------+
4 rows in set (0.00 sec)
mysql> DELETE FROM user ORDER BY id ASC LIMIT 2;
Query OK, 2 rows affected (0.00 sec)
mysql> select * from user;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 3 | tom | america |
| 4 | ken | japan |
+------+------+---------+
2 rows in set (0.00 sec)
mysql>
↓↓ 降順に並び替えた上でDELETE ↓↓
mysql> select * from user;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 1 | hero | japan |
| 2 | bob | america |
| 3 | tom | america |
| 4 | ken | japan |
+------+------+---------+
4 rows in set (0.00 sec)
mysql> DELETE FROM user ORDER By id DESC LIMIT 2;
Query OK, 2 rows affected (0.00 sec)
mysql> select * from user;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 1 | hero | japan |
| 2 | bob | america |
+------+------+---------+
2 rows in set (0.00 sec)
mysql>
コマンド実行後、「昇順/降順で並び替えした上で先頭のデータが2件」減っていた場合、正常に「並び替えをした上でデータを削除できた」と判断できます。
以上が、「並び順(降順/昇順)を指定して削除(ORDER BY)」となります。
条件に一致するデータのみを削除(WHERE)
「条件に一致するデータのみを削除(WHERE)」に関して解説します。
DELETEを使えば、条件を満たすMySQLのレコードを削除できます。
MySQLで「条件に一致するデータのみを削除」したい場合のDELETEの構文は、以下となります。
★DELETEの構文:条件に一致するデータのみを削除したい場合★
・使い方
DELETE FROM テーブル名 WHERE 条件;
・例
DELETE FROM user WHERE name = ‘hero’;
・実行結果
userテーブル内のname列がheroであるデータを削除する
それでは、MySQLで条件に一致するデータのみを削除するために、以下のDELETEを実行してみましょう。
mysql> select * from user;
+------+------+-----------+
| id | name | address |
+------+------+-----------+
| 1 | hero | kakedashi |
| 2 | tom | america |
| 3 | bob | america |
| 4 | ken | japan |
+------+------+-----------+
4 rows in set (0.00 sec)
mysql> DELETE FROM user WHERE name = 'hero';
Query OK, 1 row affected (0.00 sec)
mysql> select * from user;
+------+------+---------+
| id | name | address |
+------+------+---------+
| 2 | tom | america |
| 3 | bob | america |
| 4 | ken | japan |
+------+------+---------+
3 rows in set (0.00 sec)
mysql>
コマンド実行後、「| 1 | hero | kakedashi |」が表示されていない場合、正常に「条件に一致するレコードを削除できた」と判断できます。
以上が、「条件に一致するデータのみを削除(WHERE)」となります。
以上が、MySQLのデータ削除時に多用するDELETEの4パターンとなります。
DELETEをMySQLで使う上での注意点
「DELETEをMySQLで使う上での注意点」に関してご紹介します。
DELETEを使うと、MySQLの指定したレコードを削除できます。その際に注意するべき点を解説しますね。
DELETEを使って、MySQLの指定テーブル内のレコードを削除したい場合、以下のことを注意しましょう。
★MySQLでDELETEを使う場合の注意点★
・テーブル内のデータは削除できるが、スキーマー構造は残存する
・大量データを全削除する場合、時間がかかる(TRUNCATEを使うこと)
・WHEREなどの条件の付け忘れに注意すること(全データ削除される)
以上が、「DELETEをMySQLで使う上での注意点」となります。
DELETEを実行することで、MySQL内のレコードを削除できます。
ただし、誤ったDELETEを実行すると取り返しが利かなくなるので注意して使いましょう。
ちなみに、「MySQLを基礎から体系的に学びたい」や「その他のMySQLのコマンドを知りたい」方は、以下の参考書がオススメです。
MySQLを動画で学びたい方には、以下をオススメします。
【まとめ】MySQLのDELETEでデータ削除時に多用する4パターン
今回の記事を通して、「MySQLのDELETEでデータ削除時に多用する4パターン」をご紹介することで、以下の悩みを解消しました。
★悩み★
・MySQLに格納したデータ(レコード)を削除はできる?
・DELETEの末尾に指定するWHERE/ORDER/LIMITって何?
・DELETEを使ってMySQLのデータ削除する際に気を付けることってある?
「MySQLのDELETEとは?」や「MySQLでよく使うDELETEの使い方は?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
コメント