FE EXAM

DELETE文(行の削除)

表から条件に合うレコードを削除するSQLの命令。

INTERACTIVE VISUALIZATION
WHERE(対象行)
削除される行
SQL
DELETE FROM 社員
WHERE 部署 = '営業'
シナリオ
ステップ1 / 5
STEP 1/5元の表を確認する社員表に4行あります。このうち営業部の社員のレコードをまとめて削除したい、という場面です。DELETE 文は条件に合うレコードを表から消す命令です。
社員 表
ID名前部署
1佐藤営業
2鈴木開発
3高橋営業
4田中開発
解説

📌
DELETE文とは

社員 表

DELETE 文とは、表から条件に合うレコードを削除する SQL の命令のことです。条件に合った行(レコード)を表から丸ごと取り除きます。

身近な例で考えると、図書館の蔵書台帳から、廃棄した本の登録を消す作業に似ています。値の一部だけを直す UPDATE と違い、DELETE は「その本の記録を1件まるごと消す」というイメージです。

上のツールで▶ボタンを押すと、WHERE で削除する対象の行を選び、その行が表から取り除かれていく流れを確認できます。

📐
基本構文

DELETE 文の基本の形は、対象の表と、削除する行の条件でできています。とてもシンプルです。

DELETE FROM 表 WHERE 条件

それぞれの役割は次のとおりです。
DELETE FROM 表:どの表からレコードを削除するかを指定する
WHERE 条件:どの行を削除するかを絞り込む
列名は書かない:DELETE は行(レコード)単位の削除なので、SELECT のように列を指定しない

ここで混同しやすいのが DROP TABLE との違いです。DELETE は表の中の行(データ)を消すだけで、表という入れ物は残ります。一方 DROP TABLE は表の定義ごと丸ごと消します。「中身を消す」のが DELETE、「箱ごと捨てる」のが DROP と覚えると区別しやすいです。

🗂️
DMLの中でのDELETEの立ち位置

DML(データ操作言語)INSERT追加SELECT検索UPDATE変更DELETE削除← 今ここ

INSERT・SELECT・UPDATE・DELETE の4つをまとめてDML(=データ操作言語)と呼びます。DELETE はそのうち「条件に合う行を行ごと消す」専用の命令です。

なぜ DELETE が必要か。UPDATE は値を書き換えるだけで、行そのものは残ります。「退職した社員の情報を完全に消す」「期限切れの予約を削除する」のように、行そのものを表から取り除きたいときに DELETE を使います。

DELETE はデータを消す操作なので、元に戻すことが難しい点が他の DML と大きく違います。INSERT は再度追加できますが、削除したデータは直前にバックアップがなければ復元できません。だからこそ WHERE で対象を正確に絞り込むことが特に重要です。

🧹
DELETE・TRUNCATE・DROPの違い

命令消えるもの表の入れ物WHEREで絞れる
DELETE条件に合う行(データ)残るできる
TRUNCATE全行(データ)残るできない
DROP TABLE全行+表の定義消えるできない

「全部消したい」場合でも、目的によって使う命令が変わります。3つの違いを整理しましょう。
DELETE:WHERE で絞った行だけを消す。表の入れ物は残る。行を選んで消したいときに使う
TRUNCATE TABLE(=切り捨て):全行をまとめて消す。DELETE より高速。表の入れ物は残る。全件削除したいが表の構造は残したい場合
DROP TABLE(=削除):全行+表の定義(列の設定など)ごと丸ごと消す。表そのものが不要なときに使う

身近な例で考えると、ゴミ箱の中身を捨てる(DELETE)・ゴミ箱を空にする(TRUNCATE)・ゴミ箱ごと処分する(DROP TABLE)という違いです。DELETE は「選んで消す」ことができる唯一の命令なので、WHERE による絞り込みが重要になります。

⚠️
WHERE句の重要性

WHERE あり1行だけ削除WHERE なし全行が消える

DELETE で最も注意すべきなのが WHERE 句の書き忘れです。WHERE を省略すると、表のすべての行が削除対象になってしまいます。


WHERE ありWHERE 部署='営業' なら営業部の行だけが消える
WHERE なしDELETE FROM 社員 だと全レコードが消え、表が空になる

削除したデータは元に戻すのがとても難しいため、これは UPDATE 以上に怖い事故になり得ます。名簿から1人だけ消すつもりが、全員分を消してしまうようなものです。DELETE を実行する前には「WHERE で対象を正しく絞れているか」を必ず確認することが大切です。

練習問題

🎯
基本情報技術者 練習問題

Q1.DELETE文の説明として最も適切なものはどれか。
A.表から指定した列や行を取り出す問合せ文
B.表に新しいレコードを追加する命令
C.表の既存レコードの値を変更する命令
D.表から条件に合うレコードを削除する命令
Q2.DELETE文の基本構文として正しいものはどれか。
A.DELETE FROM 表 WHERE 条件
B.DELETE 表 SET 列 = 値
C.DELETE INTO 表 VALUES (値)
D.DELETE 列 FROM 表
Q3.「DELETE FROM 社員」のように WHERE 句を書かずに実行するとどうなるか。
A.社員表という入れ物そのものが消える
B.最初の1行だけが削除される
C.表の全レコードが削除され空になる
D.エラーになり何も削除されない

関連コンテンツ