はじめに
DELETE文は、SQLのなかでもデータ操作言語と呼ばれ、データベース内のデータを削除する命令です。
DELETE文を使用することによって、テーブル内の不要になったデータを削除することができます。
一方でDELETE文を使わない削除命令もあります。
Step1: 概念を知る
削除は2種類あります。
- 物理削除
- データベース上からデータを削除します。
特別な手続きをすれば削除したデータを復元することができますが、
基本的にはデータを完全に削除することを前提に行います。
DELETE FROM "テーブル名"
- 論理削除
- データベース上からデータを見かけ上削除します。
データに削除されたという目印(削除フラグ)を設定し、
見かけ上削除されているようにするだけで、実際には削除されていません。
削除フラグを立てたデータを扱うこともできますし、復元も容易に行うことができます。
UPDATE "テーブル名" SET "カラム名" = TRUE (or FALSE)
もしくは、'0(生存)'、'1(削除)'
を設定したり、
削除フラグではなく、データステータス( DATA_STS
)などとして、
以下のようにアルファベットを付与したりして管理します。
リテラル | 意味 |
---|---|
'E' |
生存(Exists) |
'D' |
削除済み(Delete) |
'P' |
保留中(Pendding) |
Step2: 使い方を知る
では、さっそくテーブル内のデータを削除してみましょう。
サンプル
DELETE FROM person WHERE id = 1;
解説
DELETE FROM
を宣言し、テーブル名person
をつけます。- 削除したい値、行が決まっている場合は
WHERE句
で指定します。
実行して構文にエラーがなければテーブル内のデータが変更されます。
これで、不要になったデータを削除してテーブルを新しくすることができます。
DELETE文もUPDATE文同様、
WHERE句
で条件を指定しなければテーブルすべてに対して削除命令を実行します。
全てのデータを削除する分には問題ありませんが、
こちらも WHERE句
を指定するクセをつけましょう。
ちなみに、テーブル内のデータを全て削除しても、テーブル自体は残ります。
使い分け
- 物理削除
- メリット
1: delete文の宣言で簡単にできる。
2: データが減るため、データベースのパフォーマンスが上がる。 - デメリット
1: データの復元が難しい。
2: 削除したら参照不可能になる。 - 論理削除
- メリット
1: データの削除、復元が容易。
2: 削除済みデータの参照が可能。 - デメリット
1: テーブルに削除フラグ用の列追加が必要。
2: データを参照する際、削除フラグを立てたデータを表示しないようにクエリを作成する必要がある。
3: データが増えるため、データベースのパフォーマンスが下がる。
データがもう必要ないとわかっている際には、物理削除を行い、
削除したデータを見ながら、データベースを管理したい際には、論理削除を行う
といった使い分けが出来るようになるといいでしょう。