TRUNCATEは、SQLのデータ操作言語(DML)の一種で、テーブルからすべての行を高速かつ効率的に削除するために使用されます。
TRUNCATE TABLE テーブル名;
このページではTRUNCATEの基本、DELETE文との違いをサンプルコード付きで初心者向けにわかりやすく解説します。
プログラマーやエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
TRUNCATE
構文ルール
TRUNCATE TABLE テーブル名;
データ削除をしたいテーブル名を "TRUNCATE TABLE" の直後で指定するだけです。
サンプルコード付きで具体的な使い方を説明しましょう。例えば、次のようなテーブルがあるとします。
product_id | name | price |
---|---|---|
1 | Laptop | 1000 |
2 | Smartphone | 700 |
3 | Tablet | 400 |
実際にテーブルを作成して実行してみたい方は以下のSQL文を参考にしてください。
-- テーブル作成 CREATE TABLE products ( product_id INT PRIMARY KEY, name VARCHAR(255) NOT NULL, price DECIMAL(10, 2) NOT NULL ); -- レコード登録 INSERT INTO products (product_id, name, price) VALUES (1, 'Laptop', 1000), (2, 'Smartphone', 700), (3, 'Tablet', 400);
参考:CREATE TABLE文 / INSERT文
"productsテーブル" からすべての行を削除するには、TRUNCATEを使って次のようなクエリを書きます。
/* 実行前 +------------+------------+---------+ | product_id | name | price | +------------+------------+---------+ | 1 | Laptop | 1000.00 | | 2 | Smartphone | 700.00 | | 3 | Tablet | 400.00 | +------------+------------+---------+ */ TRUNCATE TABLE products; /* 実行後 Empty set +------------+------------+---------+ | product_id | name | price | +------------+------------+---------+ | | | | +------------+------------+---------+
たったこれだけの非常に簡単な構文ですが、いくつか注意すべき点も存在します。
TRUNCATEの特徴と注意点
TRUNCATEは以下のような特徴と注意点を持ちます。
以下の点を考慮して、TRUNCATEを使用するかどうかを判断していきましょう。
まとめると、データの削除が完全である必要があり高速性が重要である場合、TRUNCATEは適切な選択であるが、ロールバック機能やトリガー実行が必要な場合は、DELETE文を使用するのが適切である、ということになります。
TRUNCATE vs DELETE
TRUNCATEとDELETEは、どちらもデータベースからデータを削除するためのSQL文ですが、挙動や特性が異なります。
以下に、それぞれの違いをわかりやすく説明します
参考 トランザクションとは?
総括すると、TRUNCATEはテーブル内の全てのデータを高速に削除する場合に適していますが、ロールバックやトリガーの実行が必要な場合は適していないといえます。
一方、DELETEは特定の行を削除する柔軟性があり、ロールバックやトリガーの実行が可能。ただし、TRUNCATEよりも速度が遅いというのがポイントです。
どちらを使用するかは、具体的な要件や状況によって決定します。
参考 DELETE文
SQLを1から学習したい方は
SQLやデータベースの仕組みを1から学習したい方(学び直したい方)向けに、現役エンジニア達のスキルを結集して 完全無料 のSQL教材を作成しました。
SQLは決して難しい技術ではないので、エンジニアであれば「当たり前のように」扱えて当然かも・・・?
とはいえ、案外SQLをちゃんと使ったことがない人も多いはずです。この機会に是非一度ご覧になってみてください。