【SQL】全てのデータを削除するTRUNCATE文の使い方

【SQL】全てのデータを削除するTRUNCATE文の使い方

山下 雅也

山下 雅也

開発エンジニア/エンジニア歴2年7ヶ月

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文ではロールバックすることが出来ません。以上それぞれの違いについて簡単に表にまとめると以下の通りとなります。

TRUNCATEDELETE
条件指定不可可能
処理速度速い遅い
ロールバック不可可能

TRUNCATE文とDELETE文ではこれらのような違いがあるため、状況に応じて使い分けるようにしましょう。


3.まとめ

以上、本記事ではTRUNCATE文の使い方、TRUNCATE文とDELETE文の違いについて解説しました。

TRUNCATE文は一度実行すると、テーブル内の全てのデータが削除され、ロールバックもできないため、誤って大切なデータを削除してしまった。。。とならないよう、特に慣れないうちは細心の注意を払って使うようにしましょう。

私たちは、全てのエンジニアに市場価値を高め自身の望む理想のキャリアを歩んでいただきたいと考えています。もし、今あなたが転職を検討しているのであればこちらの記事をご一読ください。理想のキャリアを実現するためのヒントが見つかるはずです。

コメント

公式アカウントLINE限定!ボールドの内定確率が分かる無料診断実施中
公式アカウントLINE限定!
ボールドの内定確率が分かる無料診断実施中