カテゴリ: データベース 更新日: 2025/02/24

SQLのDELETE文を完全ガイド!初心者でもわかるデータ削除方法

DELETE文(データの削除)
DELETE文(データの削除)

新人と先輩の会話形式で理解しよう

新人

「データベースの不要な情報を削除するにはどうしたらいいですか?」

先輩

「データを削除するには、SQLのDELETE文を使うよ。」

新人

「DELETE文って何ですか?」

先輩

「DELETE文を使うと、データベースのテーブルから不要なデータを削除できるんだ。まずは、使用するテーブルを確認してみよう!」

1. 今回使用するテーブルデータ

1. 今回使用するテーブルデータ
1. 今回使用するテーブルデータ

今回のSQLの解説では、社員情報を管理するemployeeテーブルを使用します。このテーブルには、社員のidnameagedepartmentsalaryの情報が格納されています。

id name age department salary
1田中 太郎30営業5000000
2佐藤 花子25マーケティング4200000
3鈴木 一郎35開発6000000
4高橋 直子28人事4800000
5山本 健太40経理5500000

2. DELETE文の基本

2. DELETE文の基本
2. DELETE文の基本

SQLのDELETE文を使うと、特定のデータを削除することができます。基本の構文は次のようになります。


DELETE FROM employee 
WHERE id = 5;

このSQL文は、employeeテーブルのid5の社員のデータを削除します。

このSQLを実行すると、データが削除され、テーブルの内容は以下のようになります。

id name age department salary
1田中 太郎30営業5000000
2佐藤 花子25マーケティング4200000
3鈴木 一郎35開発6000000
4高橋 直子28人事4800000

このように、DELETE文を使うことで、不要なデータを簡単に削除できます。

3. WHERE句を使った特定のデータ削除

3. WHERE句を使った特定のデータ削除
3. WHERE句を使った特定のデータ削除

DELETE文では、WHERE句を使うことで、特定の条件に一致するデータのみを削除することができます。


DELETE FROM employee 
WHERE department = '営業';

このSQL文を実行すると、営業部の社員のデータがすべて削除されます。

id name age department salary
2佐藤 花子25マーケティング4200000
3鈴木 一郎35開発6000000
4高橋 直子28人事4800000

このように、WHERE句を使うことで、削除するデータを限定することができます。

4. 複数の条件を指定して削除する方法

4. 複数の条件を指定して削除する方法
4. 複数の条件を指定して削除する方法

DELETE文では、WHERE句を組み合わせることで、複数の条件に合致するデータのみを削除できます。


DELETE FROM employee 
WHERE department = '開発' AND age > 30;

このSQLを実行すると、開発部門のうち、30歳以上の社員のデータだけが削除されます。

id name age department salary
2佐藤 花子25マーケティング4200000
4高橋 直子28人事4800000

このように、複数の条件を指定することで、削除対象のデータを細かく指定できます。

5. DELETEとTRUNCATEの違い

5. DELETEとTRUNCATEの違い
5. DELETEとTRUNCATEの違い

SQLにはDELETE文のほかに、TRUNCATE文を使ってテーブルのデータを削除する方法があります。両者の違いを比較してみましょう。

操作 DELETE TRUNCATE
削除対象 指定した行のみ テーブル内の全データ
WHERE句 使用可能 使用不可
削除速度 遅い(1行ずつ削除) 速い(全行一括削除)
ROLLBACK(元に戻せるか) 可能 不可

テーブルのすべてのデータを削除する場合は、TRUNCATEを使用することで処理を高速化できます。


TRUNCATE TABLE employee;

このSQLを実行すると、employeeテーブルのデータがすべて削除されますが、DELETEとは異なり、元に戻すことはできません。

このように、用途に応じてDELETETRUNCATEを使い分けることが重要です。

6. よくあるエラーと対策

6. よくあるエラーと対策
6. よくあるエラーと対策

SQLのDELETE文を使用する際に、初心者がよく遭遇するエラーとその対策を紹介します。

1. WHERE句を指定せずに全データを削除してしまう

間違えてWHERE句を指定せずに実行すると、テーブル内のすべてのデータが削除されてしまいます。


DELETE FROM employee;

エラー内容: 全データが削除されてしまう。

対策: 必ずWHERE句を指定し、対象のデータのみ削除する。


DELETE FROM employee WHERE id = 3;

2. 存在しないカラム名を指定

誤ったカラム名を指定するとエラーになります。


DELETE FROM employee WHERE employe_id = 3;

エラー内容: ERROR: Unknown column 'employe_id' in 'where clause'

対策: 正しいカラム名を使用する。


DELETE FROM employee WHERE id = 3;

7. DELETEとJOINを組み合わせた削除

7. DELETEとJOINを組み合わせた削除
7. DELETEとJOINを組み合わせた削除

特定の条件に一致するデータを別のテーブルと紐づけて削除する場合、JOINを活用することができます。

例えば、salary_updateというテーブルがあり、給与改定により削除が決定された社員が登録されているとします。

id delete_flag
21
41

このsalary_updateテーブルをもとに、該当する社員データを削除する場合は、以下のSQLを実行します。


DELETE e FROM employee e
JOIN salary_update s ON e.id = s.id
WHERE s.delete_flag = 1;

このSQLを実行すると、該当する社員データが削除されます。

id name age department salary
1田中 太郎30営業5000000
3鈴木 一郎35開発6000000
5山本 健太40経理5500000

このように、JOINを使うと、別のテーブルのデータに基づいて削除が可能になります。

8. サブクエリを利用したDELETE

8. サブクエリを利用したDELETE
8. サブクエリを利用したDELETE

サブクエリ(入れ子のSQL)を使用すると、特定の条件に一致するデータを別のテーブルから取得して削除できます。

例えば、給与が平均以下の社員を削除する場合、以下のようなSQLを使用します。


DELETE FROM employee
WHERE salary < (SELECT AVG(salary) FROM employee);

このSQLを実行すると、給与が平均以下の社員が削除されます。

id name age department salary
3鈴木 一郎35開発6000000
5山本 健太40経理5500000

このように、サブクエリを利用すると、複雑な条件を満たすデータを削除することができます。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
Javaの引数とは?メソッドに値を渡す方法を初心者向けに徹底解説
Javaのメソッドを呼び出す書き方を完全解説!mainメソッドから実行する基本
Java のメソッドとは?基本の書き方を学ぼう
Javaの多次元配列(2次元配列)とは?初心者向けにわかりやすく解説
人気記事
No.1
Java&Spring記事人気No1
SQLのINSERT文を完全ガイド!初心者でもわかるデータの追加方法
No.2
Java&Spring記事人気No2
HTMLのセレクトボックス(プルダウン)の使い方を完全ガイド!selectとoptionの基本を覚えよう
No.3
Java&Spring記事人気No3
Spring Bootで学ぶ!セッションの有効期限(タイムアウト)設定の基礎
No.4
Java&Spring記事人気No4
Java のファイル構成を理解しよう(.javaと.class)|初心者向けにわかりやすく解説