サイトアイコン SE日記

【SQL】DELETEとTRUNCATE・DROPテーブルの違い


ここではORACLEデータベースのSQLで、DELETE文とTRUNCATE文・DROP文を比較して、違いを紹介しています。

DELETE文とDROP TABLE文の違いは↓で紹介していますので参考にしてください。
>>【SQL】DELETE文とDROPテーブルの違い

DELETE文とTRUNCATE文の違い

DELETE文とTRUNCATE文はどちらもテーブルのレコードを削除するという点では共通していますが、全く別のSQLコマンドです。

DELETE文とTRUNCATE文の主な違いは次の3点です。
 1.削除対象を選べるかどうか
 2.ロールバックできるかどうか
 3.処理時間が速いかどうか
以上の3点です。

もう少し詳しく解説していきます。

1.削除対象を選べるかどうか

DELETE文とTRUNCATE文の大きな違いの1つは、削除する対象のレコードを選択できるかどうかです。

DELETE文は削除対象を選択できますが、TRUNCATE文は削除対象を選択できません。

DELETE文はWHERE句に条件を付けることで、削除する対象のレコードを自由に選ぶことが出来ます。

一方、TRUNCATE文は条件の指定が出来ないので、常に、表の全てのレコードを削除します。

つまり、削除対象を選択したい場合は、DELETE文を使うことになります。

2.ロールバックできるかどうか

DELETE文とTRUNCATE文の違いの2つ目は、ロールバック(rollback)して取り消すことが出来るかどうかです。

DELETE文はコミット(commit)する前ならロールバックできますが、TRUNCATE文はロールバックすることが出来ません。

TRUNCATE文は実行と同時にコミットされるので、ロールバックによる取り消しが出来ません。

3.処理時間が速いかどうか

DELETE文とTRUNCATE文の違いの3つ目は、処理時間が速いかどうかです。

条件にもよりますが、基本的にはDELETE文よりもTRUNCATE文の方が処理時間が速く、短い時間でレコードを削除します。

DELETE文では削除したレコードの記録を保持する仕組みがあり、これを使うことでロールバックで取り消すことが出来ます。

一方、TRUNCATE文はロールバックによる取り消しが出来ない代わりに、削除した記録(更新情報)を保持しません。この更新情報を作ったり保持したりする時間がないのでTRUNCATE文の方が高速にレコードを削除してくれます。

DELETE文とTRUNCATE文の違いまとめ

DELETE文とTRUNCATE文の主な違いは次の3点です。
 1.削除対象を選べるかどうか
 2.ロールバックできるかどうか
 3.処理時間が速いかどうか
以上の3点です。

表にまとめると次の通りです。

DELETE文TRUNCATE文
削除対象選択できる選択できない
(全件一括削除のみ)
ロールバックできるできない
処理時間遅い速い

DELETE文とDROPテーブルの違い

DELETE文とDROP TABLE文はどちらも表(テーブル)のレコードを削除するという点では共通していますが、全く別のSQLコマンドです。

DELETE文とDROP TABLE文の主な違いは次の3点です。
 1.表を削除するかどうか
 2.削除対象を選択できるかどうか
 3.ロールバックできるかどうか
以上の3点です。

もう少し詳しく解説していきます。

1.表を削除するかどうか

DELETE文は表に存在するレコードを削除するSQLです。テーブルそのものを削除することは出来ません。

一方、DROP TABLE文は、表に存在するレコードの削除に加えて、表そのものを削除します。

DROP TABLEすると、表そのものがなくなるのでデータを追加することも更新することも出来なくなります。

表そのものを削除する必要がない場合、データを削除するときは、DELETEを使います。

2.削除対象を選択できるかどうか

DELETE文は、任意でWHERE句の条件を指定することができ、指定した条件で削除する対象を選択することが出来ます。

DROP TABLEは表そのものと表内に存在するレコードを全て削除します。表そのものを削除するSQLコマンドなので、削除する対象を選択することは出来ません。

3.ロールバックできるかどうか

DELETE文はコミット(commit)しない限り、ロールバックすることが出来ます。つまり誤ってDELETE文を実行しても取り消しすることが出来ます。

一方、DROP TABLEはロールバックできません。つまり間違って実行した場合には取り消しすることが出来ません。

DROP TABLEは表そのものも削除してしまうので十分に注意して使う必要があります。

※DROPしたテーブルは一時的にゴミ箱に保存されています。すぐにコマンドを実行すれば復活させることが出来ます。

DELETE文とDROPテーブルの違いまとめ

DELETE文とDROP TABLE文の主な違いは次の3点です。
 1.表を削除するかどうか
 2.削除対象を選択できるかどうか
 3.ロールバックできるかどうか
以上の3点です。

表にまとめると次の通りです

DELETE文DROP TABLE文
表の削除削除しない削除する
削除対象の選択選択できる全件削除のみ
ロールバックできるできない
モバイルバージョンを終了