SQL

【SQL】TRUNCATEの使い方(テーブル再作成)

2021年2月9日

TRUNCATEの基本構文

SQLのTRUNCATE文を使うことで、テーブルを再作成(テーブルごと削除してから再作成)できます。

TRUNCATEの基本構文

TRUNCATE  TABLE  テーブル名;

本記事では、TRUNCATE 文を用いてテーブルを再作成する方法について解説しています。

TRUNCATE文の書き方

テーブルを再作成する

それでは、TRUNCATE文を用いてテーブルを再作成します。次の例では「item」テーブルを「TRUNCATE」を用いて再作成しています。

■TRUNCATE実施前

> SELECT * FROM item;
+----+-------+-------+----------+
| id | name  | price | category |
+----+-------+-------+----------+
|  1 | 商品A |  1980 | 書籍     |
|  2 | 商品B |  4980 | 家具     |
|  3 | 商品C |  7200 | 家具     |
|  4 | 商品D |   500 | 書籍     |
|  5 | 商品E |  1500 | 雑貨     |
+----+-------+-------+----------+
5 rows in set (0.01 sec)

■TRUNCATEの実行例

> TRUNCATE TABLE item;
Query OK, 0 rows affected (16.41 sec)

■TRUNCATE実施後

> SELECT * FROM item;
Empty set (0.00 sec)

TRUNCATE文を実行した結果、「item」テーブルに登録されているレコードはすべて削除され、テーブルが再作成されました。

スポンサーリンク

「TRUNCATE」と「DELETE」の違い

テーブル内のすべてのデータを削除する方法には「TRUNCATE」と「DELETE」があります。

「TRUNCATE」と「DELETE」の違いは次の通りです。

■TRUNCATEの特徴

  • テーブルを再作成する
  • テーブルを再作成するのでDELETE文よりも高速
  • ロールバック(rollback)ができない
  • テーブルを再作成するので「AUTO_INCREMENT」の値は初期化される

■DELETEの特徴

テーブルのデータを1つずつ削除する
ロールバック(rollback)できる
データが削除されるだけなので「AUTO_INCREMENT」の値は初期化されない

テーブルのデータをすべて削除する場合は「TRUNCATE」の方が高速です。ただし「TRUNCATE」の場合はロールバック(rollback)ができないので、用途に応じて使い分ける必要があります。

helpful