PostgreSQLのDELETE文の基本と注意点
生徒
「PostgreSQLのDELETEって聞くと、全部消えてしまいそうで怖いです…」
先生
「DELETEは確かに注意が必要ですが、正しく使えば特定のデータだけを消せます。名簿から退会した人の行を線で消す作業だと思ってください。」
生徒
「パソコンをあまり触ったことがなくても理解できますか?」
先生
「大丈夫です。表を紙に書いたものとして考えながら、ゆっくり説明します。」
1. SQLとは何か?
SQLは、データベースと呼ばれる「情報を整理して保存する箱」に命令を出すための言葉です。PostgreSQLは、そのSQLを使って操作する代表的なデータベースです。
SQLを使うと、表の中のデータを見る、追加する、変更する、削除する、といった操作ができます。DELETE文は、その中でも「削除」を担当します。
2. DELETE文の役割
DELETE文は、データベースの表に入っているデータを削除するための命令です。
現実でたとえると、会員名簿の中で退会した人の行を消す作業です。紙の名簿なら消しゴムで消しますが、PostgreSQLではDELETE文を使います。
3. 今回使うテーブルを確認しよう
以下のusersテーブルを使って、DELETE文の基本を説明します。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
4 | 高橋次郎 | 22 | jiro@example.com
5 | 伊藤美咲 | 28 | misaki@example.com
4. DELETE文の基本の形
DELETE文の基本的な書き方は次の形です。
DELETE FROM users
WHERE id = 4;
DELETE FROMは「どの表から消すか」、WHEREは「どの行を消すか」を指定します。ここでは、idが4の高橋次郎さんのデータだけを削除しています。
id | name | age | email
---+------------+-----+-------------------
1 | 山田太郎 | 25 | taro@example.com
2 | 佐藤花子 | 19 | hanako@example.com
3 | 鈴木一郎 | 30 | ichiro@example.com
5 | 伊藤美咲 | 28 | misaki@example.com
5. 条件を指定して削除する
DELETE文では、WHEREを使って条件を指定することで、複数のデータをまとめて削除できます。
たとえば、年齢が20歳未満の人を削除したい場合は、次のように書きます。
DELETE FROM users
WHERE age < 20;
条件に合う行だけが削除されるため、必要なデータは残ります。
6. WHEREを書かないとどうなるか
DELETE文で最も危険なのが、WHEREを書かない場合です。
もし次のように書いてしまうと、表の中のデータがすべて削除されます。
DELETE FROM users;
これは名簿を丸ごとゴミ箱に捨てるような操作です。初心者のうちは、DELETE文には必ずWHEREを書く癖をつけることが大切です。
7. DELETEとTRUNCATEの違い
DELETEと似た言葉にTRUNCATEがあります。
DELETEは条件を指定して一部のデータを消せますが、TRUNCATEは表の中身を一瞬で全部消します。取り消しも難しいため、初心者はまずDELETEだけを覚えれば十分です。
8. DELETE文を安全に使う考え方
DELETE文を使う前に、まずSELECT文で「本当に消したいデータか」を確認するのがおすすめです。
たとえば、削除条件をSELECTで試して、表示された内容を見てからDELETEを実行すると安心です。
この手順を守ることで、間違って大切なデータを消すリスクを減らせます。
9. DELETE文を理解する意味
DELETE文は少し怖い印象がありますが、正しく使えばデータベースをきれいに保つために欠かせません。
不要になった情報を整理することで、データベースは見やすく、使いやすくなります。
まずは一行だけ削除するところから、慎重に慣れていきましょう。