TRUNCATE の使い方

表を空にする

書き方

TRUNCATE TABLE 表;

全行を一度に消します(表は残る)。

よく使うオプション

オプション意味
TRUNCATE TABLE 表すべての行を一度に消す(表は残る)
RESTART IDENTITY自動の番号を 1 から振り直す(PostgreSQL)
CASCADE参照している表も一緒に空にする(PostgreSQL)

例

TRUNCATE TABLE event_logs;TRUNCATE TABLE

ログの表を空にします。表の形やインデックスは残ります。

TRUNCATE TABLE memos RESTART IDENTITY;

空にしたうえで、自動の番号も 1 からに戻します。

SELECT COUNT(*) FROM event_logs; count
-------
     0
(1 row)

空になったことを確かめます。

よくある間違い・注意

  • TRUNCATE には WHERE が書けません。一部の行だけを消すときは DELETE を使います。
  • DELETE より速い代わりに、Oracle や MySQL では ROLLBACK で戻せません(PostgreSQL は BEGIN の中なら戻せます)。
  • 外部キーで参照されている表は、CASCADE を付けないと空にできません。

実際に打って練習する

SQL コースの Lv45「中身を空にする TRUNCATE」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

SQL 構文一覧(使い方と例)へ戻る