読み方 : トランケートぶん

TRUNCATE文【TRUNCATE statement】

TRUNCATE文とは?

リレーショナルデータベース(RDB)の操作を行うSQLStructured Query Language)の構文の一つで、指定したテーブルのすべての行を削除するもの。テーブルの構造や定義、インデックスはそのまま残し、格納されているデータだけを消去する。
TRUNCATE文のイメージ画像

基本的な構文は「TRUNCATE TABLE テーブル名」で、多くのデータベース製品では「TABLE」を省略して「TRUNCATE テーブル名」と書くこともできる。WHERE句による条件指定はできず、常にテーブル全体が対象となる。テスト環境のデータリセット、ログ領域の初期化、集計用テーブルの再作成前処理といった場面で利用される。

同じくデータを削除するDELETE文との違いは処理方式にある。DELETE文は行を1件ずつ検証しながら削除し、その内容をトランザクションログに記録する。一方、TRUNCATE文はデータ領域をまとめて解放するため、大量のデータを扱う場合に高速で処理できる。また、IDENTITY列やAUTO_INCREMENT列を持つテーブルでは、TRUNCATE文の実行後に連番カウンタが初期値に戻る製品が多い。DELETE文では連番情報が保持されるため、この挙動の違いが運用上の判断に影響することがある。

トランザクション制御との関係は製品によって異なる。PostgreSQLMySQLのInnoDBではROLLBACKによる取り消しが可能だが、Oracle DatabaseではTRUNCATE文の実行が即座に確定されるため取り消しができない。また、トランザクションログが生成されない製品では、レプリケーションの対象となっているテーブルに実行できない場合もある。

他のテーブルから外部キーで参照されているテーブルに対しては、多くの製品でTRUNCATE文の実行がエラーとなる。参照整合性を保つための制御であり、事前に関連テーブルのデータを削除するか、制約を一時的に無効化する対処が必要になる。なお、DELETE権限とは別にTRUNCATE文の実行権限を独立して設けている製品もある。

(2026.5.21更新)
この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。