【SQL】DELETE文を1分でわかりやすく解説

Database

テーブルからレコード削除を行うDELETE文について初心者向けにわかりやすく1分で解説します。

前提となる知識は一切必要ありません。このページ内を読めば自分ひとりでテーブルからレコード削除が行えるようになるようサンプルコード付きでご説明します。

このページで学べる内容
  • DELETE文文の使い方/構文ルール
    • 削除対象レコードの指定
  • DELETE文利用時の注意点

プログラマーやデータベースエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識。是非最後までご覧ください。

スポンサーリンク

SQL:DELETE文

DELETE文はテーブルからレコードを削除する場合に利用します。

構文ルールは以下の通り非常にシンプルです。

DELETE FROM テーブル名;

以下のテーブル "PointList" に存在するレコードを削除してみます。

SQL DELETE
SELECT * FROM PointList;

/*
+----+------+-------+----------+------+---------+
| ID | Name | Class | Japanese | Math | English |
+----+------+-------+----------+------+---------+
|  1 | 佐藤 | A     |      100 |  100 |      85 |
|  2 | 鈴木 | A     |       90 |   70 |      70 |
|  3 | 高橋 | A     |       85 |   70 |      65 |
|  4 | 中村 | A     |       90 |   65 |      85 |
|  5 | 小林 | B     |       70 |   90 |      65 |
|  6 | 山口 | B     |       90 |   85 |      85 |
|  7 | 田中 | B     |       70 |   90 |      65 |
|  8 | 伊藤 | B     |       70 |   90 |    NULL |
+----+------+-------+----------+------+---------+
*/

シンプルなDELETE文ではレコードを削除したいテーブルを指定するだけなので、SQLは以下の通りとなります。

DELETE FROM PointList;

-- 結果 Empty set (0.00 sec)

ただし、通常このようなシンプルなDELETE文を使うことはありません。

普通にDELETE文を使うときは、削除したいレコードが特定されています。ですが、上記のようなDELETE文を利用すると、テーブルに存在するすべてのレコードが一気に削除されてしまうのです。

では、DELETE文を使って削除したいレコードだけを削除するにはどうするか?

次の章ではDELETE文におけるWHERE句の利用方法を解説します。

DELETE文:WHERE句

削除対象を制限するにはSELECT文と同様にWHERE句で条件を指定します。

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

先ほど例にしたテーブルから1行目のレコードだけを削除する場合を考えてみましょう。

delete where

WHERE句の記述方法はSELECT文と同様なので、1行目のレコードだけが一意になるような条件を指定します。

-- ID列が「1」のレコードのみを削除
DELETE FROM PointList 
 where ID = 1;

/*1行目のレコードのみが削除される
+----+------+-------+----------+------+---------+
| ID | Name | Class | Japanese | Math | English |
+----+------+-------+----------+------+---------+
|  2 | 鈴木 | A     |       90 |   70 |      70 |
|  3 | 高橋 | A     |       85 |   70 |      65 |
|  4 | 中村 | A     |       90 |   65 |      85 |
|  5 | 小林 | B     |       70 |   90 |      65 |
|  6 | 山口 | B     |       90 |   85 |      85 |
|  7 | 田中 | B     |       70 |   90 |      65 |
|  8 | 伊藤 | B     |       70 |   90 |    NULL |
+----+------+-------+----------+------+---------+
*/

このようにWHERE句で条件を指定してレコード削除を行うのが通常のDELETE文です。

もしSELECT文と同様に複数のレコードを削除したい場合は、以下のようにWHERE句の条件を変えればOK。

DELETE FROM Pointlist where Class = 'A';

/* 2行目~4行目のレコード(Class列がAのもの)が一度に削除される
+----+------+-------+----------+------+---------+
| ID | Name | Class | Japanese | Math | English |
+----+------+-------+----------+------+---------+
|  5 | 小林 | B     |       70 |   90 |      65 |
|  6 | 山口 | B     |       90 |   85 |      85 |
|  7 | 田中 | B     |       70 |   90 |      65 |
|  8 | 伊藤 | B     |       70 |   90 |    NULL |
+----+------+-------+----------+------+---------+
*/
DELETE文のまとめ
  • DELETE文はテーブルからレコードを削除する場合に利用する
  • WHERE句で条件を指定しない場合テーブルにあるすべてのレコードが削除されるため注意が必要
-- ID列が「1」のレコードのみを削除
DELETE FROM PointList 
 where ID = 1;

/*
+----+------+-------+----------+------+---------+
| ID | Name | Class | Japanese | Math | English |
+----+------+-------+----------+------+---------+
|  1 | 佐藤 | A     |      100 |  100 |      85 |←この行が削除
|  2 | 鈴木 | A     |       90 |   70 |      70 |
|  3 | 高橋 | A     |       85 |   70 |      65 |
|  4 | 中村 | A     |       90 |   65 |      85 |
|  5 | 小林 | B     |       70 |   90 |      65 |
|  6 | 山口 | B     |       90 |   85 |      85 |
|  7 | 田中 | B     |       70 |   90 |      65 |
|  8 | 伊藤 | B     |       70 |   90 |    NULL |
+----+------+-------+----------+------+---------+
*/

システムエンジニアを目指したい方は

システムエンジニアを目指す方や、IT知識を1から身につけたい方は以下のページをご覧ください。

正直どこから学び始めればよいかわからない。どのように勉強していけば、エンジニアとしてのスキルが磨けるか?が分からない・・・という方は必見です。

タイトルとURLをコピーしました