
SQLのTRUNCATEとは?全てのデータを削除するTRUNCATE文の使い方
TRUNCATE文は、テーブルからデータを全削除するときに使います。
本記事では、TRUNCATE文の使い方、また、TRUNCATE文とDELETE文の違いについて解説します。
1.TRUNCATE文の使い方
TRUNCATE文を使うことで、テーブル内の全てのレコードを削除することが出来ます。細かく言うとテーブルを削除して再作成します。基本構文は以下の通りです。
TRUNCATE TABLE [テーブル名];
例えば、TRUNCATE文を使って、「user」テーブル内の全てのレコードを削除する場合は以下の通りです。
例) userテーブル内のレコードを全削除する場合
TRUNCATE TABLE user;
テーブル内のレコードを全削除する方法は、TRUNCATE文を使う方法以外にDELETE文を使う方法もあります。ちなみにDELETE文を使って、例えば「user」テーブル内の全てのレコードを削除する場合は以下の通りです。
DELETE FROM user;
ただしTRUNCATE文とDELETE文にはいくつか違いがあります。次の章ではTRUNCATE文とDELETE文の違いについて解説します。
2.TRUNCATE文とDELETE文の違い
上述した通り、テーブル内の全てのレコードを削除する方法としては、TRUNCATE文ではなくDELETE文を使う方法もありますが、TRUNCATE文とDELETE文には以下のような違いがあります。
・条件指定の可否
DELETE文ではWHERE句を使って削除対象のレコードを条件指定することが出来ますが、TRUNCATE文では条件指定することが出来ません。TRUNCATE文を使ってレコードを削除する場合は常にテーブル内の全てのレコードを削除します。
・処理速度の違い
テーブル内のレコードを全削除する場合、DELETE文よりもTRUNCATE文を使う方がより高速で削除することが出来ます。特にデータ量が多くなるとより顕著にその差が生じます。
・ロールバックの可否
DELETE文ではコミットしていなければロールバック可能です。TRUNCATE文ではロールバックすることが出来ません。以上それぞれの違いについて簡単に表にまとめると以下の通りとなります。
TRUNCATE | DELETE | |
条件指定 | 不可 | 可能 |
処理速度 | 速い | 遅い |
ロールバック | 不可 | 可能 |
TRUNCATE文とDELETE文ではこれらのような違いがあるため、状況に応じて使い分けるようにしましょう。
3.まとめ
以上、本記事ではTRUNCATE文の使い方、TRUNCATE文とDELETE文の違いについて解説しました。
TRUNCATE文は一度実行すると、テーブル内の全てのデータが削除され、ロールバックもできないため、誤って大切なデータを削除してしまった。。。とならないよう、特に慣れないうちは細心の注意を払って使うようにしましょう。
コメント