なんとなく違いが分かるようにまとめてみました。
DELETE文
テーブル内のデータを全削除または条件に一致したデータを削除する。
DELETE FROM テーブル名;
WHERE句で条件指定しないと表内の全てのデータが削除されるので注意してください。
COMMITしていなければロールバック可能です。
※MySQLでCASCADEテーブル定義してある場合、親テーブルの削除と同時に子テーブルの削除を行うこともある。
https://qiita.com/masapiko/items/72b7f274585dac7ca0da
TRUNCATE文
テーブル内のデータを全削除する。
TRUNCATE TABLE テーブル名;
TRUNCATE文はWHERE句で条件指定できません。
テーブルごと削除してから再作成するのでDELETE文よりも高速です。
ただしロールバックができません。
※PosgreSQLはロールバックできる場合がある。
DROP文
テーブル内のオブジェクトを完全に削除する。
DROP TABLE テーブル名;
完全に削除するのでロールバックができません。
表構造も残りません。
※DROP文はオブジェクトに対するSQL文なので索引なども削除できます。
まとめ
同じタイトルをググれば同様の内容が書いてあると思いますが、
「削除の条件がある場合はDELETE文」
「一度にすべて削除したい場合はTRUNCATE文」
「オブジェクト単位で削除したい場合はDROP文」
って感じで覚えておくといいかもね