DELETE文とは?
SQLのDELETE文は、データベースから不要になったデータを削除するための文です。一度登録したデータを完全に削除したい場合に利用します。
DELETE文の基本的な書き方
DELETE FROM テーブル名
WHERE 条件;
- DELETE FROM: 削除することを示すキーワードです。
- テーブル名: 削除対象のテーブル名を指定します。
- WHERE: 削除するレコードを絞り込む条件を指定します。(省略可能)
DELETE文の使用例
- 特定の顧客を削除
DELETE FROM customers
WHERE customer_id = 1;
顧客IDが1の顧客を削除します。
- 注文履歴を削除
DELETE FROM orders
WHERE order_date < '2023-01-01';
2023年1月1日より前の注文履歴を全て削除します。
WHERE句の重要性
WHERE句は、どのレコードを削除するかを指定する上で非常に重要です。WHERE句を省略すると、テーブル内の全てのレコードが削除されてしまうため、意図しない結果になる可能性があります。
削除の注意点
- 慎重に: DELETE文を実行すると、データが完全に削除されてしまいます。
一度削除されたデータは、通常復元できません。誤って実行すると、データが失われる可能性があるため、事前にバックアップを取ったり、テスト環境で試したりすることをおすすめします。 - COMMIT
削除内容をデータベースに反映させるためには、通常、COMMIT文を実行する必要があります。 - ROLLBACK
万が一、誤った削除を行ってしまった場合は、ROLLBACK文で変更を元に戻せる場合があります。ただし、トランザクションが有効になっている場合に限られます。
削除の実用例
- 不要な顧客情報の削除: 退会した顧客情報など
- 古い注文履歴の削除: 一定期間経過した注文履歴など
- 重複データの削除: 同一データを誤って複数登録してしまった場合
まとめ
DELETE文は、データベースのデータを整理する上で欠かせない文です。WHERE句を適切に利用することで、意図したレコードのみを削除することができます。しかし、誤った使用はデータの消失につながる可能性があるため、慎重に扱うことが重要です。
さらに詳しく学びたい方へ
- TRUNCATE: テーブル内の全てのデータを一気に削除するTRUNCATE文
- CASCADE DELETE: 外部キー制約を利用して、関連するデータを連鎖的に削除する
練習問題
- 「products」という商品テーブルがあり、”product_name”(商品名)、”category”(カテゴリー)、”is_deleted”(削除済みフラグ)というカラムがあるとします。
- is_deletedが1のレコード(削除済みの商品)を全て削除してください。
- カテゴリーが”廃盤”の商品を全て削除してください。
コメント