LoginSignup
63
61

More than 5 years have passed since last update.

SQL文 DELETE・TRUNCATE・DROPの違い

Last updated at Posted at 2019-01-04

なんとなく違いが分かるようにまとめてみました。

DELETE文

テーブル内のデータを全削除または条件に一致したデータを削除する。

DELETE FROM テーブル名;

WHERE句で条件指定しないと表内の全てのデータが削除されるので注意してください。
COMMITしていなければロールバック可能です。

delete.png

※MySQLでCASCADEテーブル定義してある場合、親テーブルの削除と同時に子テーブルの削除を行うこともある。
https://qiita.com/masapiko/items/72b7f274585dac7ca0da

TRUNCATE文

テーブル内のデータを全削除する。

TRUNCATE TABLE テーブル名;

TRUNCATE文はWHERE句で条件指定できません。
テーブルごと削除してから再作成するのでDELETE文よりも高速です。
ただしロールバックができません。
※PosgreSQLはロールバックできる場合がある。

TRUNCATE.png

DROP文

テーブル内のオブジェクトを完全に削除する。

DROP TABLE テーブル名;

完全に削除するのでロールバックができません。
表構造も残りません。
※DROP文はオブジェクトに対するSQL文なので索引なども削除できます。

drop.png

まとめ

同じタイトルをググれば同様の内容が書いてあると思いますが、
「削除の条件がある場合はDELETE文」
「一度にすべて削除したい場合はTRUNCATE文」
「オブジェクト単位で削除したい場合はDROP文」

って感じで覚えておくといいかもね

63
61
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
63
61