2017年6月19日
DELETE文 TRUNCATE文 DROP文の違い(SQL構文)
みなさんどうもこんにちは。自称エリート(見習い)です。
社内で名前が痛いと言われますが、このまま名乗り続けようと思います。
本日はタイトルの通り、
DELETE文 ・ TRUNCATE文 ・ DROP文の違いを紹介していきたいと思います。
語訳は ”削除” , ”切り取る” , ”落とす” とどれも ”捨てる” のようなニュアンスですが、
それぞれ DML(データ操作言語) ・ DDL(データ定義言語) ・ DDL(データ定義言語) と違います。
※DDL文が被っています。
※因みにOracleの勉強で身につけた知識なので、
MySQLやPostreSQLなど他のDBについては違うかもしれないです。
それでは構文の使い方のおさらいを。
■DELETE文
表内のデータを(全)削除する。
DELETE FROM (表名);
WHERE句で条件指定しないと表内の全てのデータが削除されるので注意してください。
COMMITしていなければロールバック可能です。
■TRUNCATE文
表内のデータを全削除する。
TRUNCATE TABLE (表名);
TRUNCATE文はWHERE句で指定できませんのでテーブルのデータを全て削除します。
テーブルごと削除してから再作成するのでDELETE文よりも高速です。
ただしロールバックができませんので注意してください。
■DROP文
表内のオブジェクトを完全に削除する。
DROP TABLE (表名);
完全に削除するのでロールバックができません。表構造も残りません。
因みにDROP文はオブジェクトに対するSQL文なのでTABLEを変えてあげれば索引なども削除できます。
簡単なまとめといった内容なので、
詳しい構文を知りたいという方は各構文について検索してみてください。
・単純に1行単位での削除はDELETE文
・大量のデータを一度にすべて削除したい時はTRUNCATE文
・オブジェクト単位で削除したいときはDROP文
慣れないうちは上記で覚えるといいかもしれません。