MySQLでテーブル内の全レコードを一括削除する方法|TRUNCATE TABLEの使い方
MySQLで全レコードを削除するにはTRUNCATEを使う
MySQLのテーブルからすべてのレコード(行)を一括で削除したい場合、DELETE文ではなく TRUNCATE コマンドを使用するのが効率的です。TRUNCATEはテーブル全体のデータを高速に空にできるため、大量のデータを扱う際に特に便利です。
まずは基本となる構文を見てみましょう。
TRUNCATE TABLE テーブル名;
この構文を実行すると、指定したテーブルからすべてのレコードが削除されます。テーブル構造自体はそのまま残るため、カラム定義を再作成する必要はありません。
動作確認用のサンプルテーブルを作成する
それでは、実際にテーブルを作成してTRUNCATEの動きを確認してみましょう。まずはサンプル用のテーブルを作成します。
mysql> create table TruncateTableDemo -> ( -> BookId int, -> BookName varchar(200) -> ); Query OK, 0 rows affected (0.54 sec)
次に、INSERTコマンドを使ってテーブルにレコードを挿入します。
mysql> insert into TruncateTableDemo values(1001,'C in Dept'); Query OK, 1 row affected (0.18 sec) mysql> insert into TruncateTableDemo values(1002,'The C++ Programming'); Query OK, 1 row affected (0.22 sec) mysql> insert into TruncateTableDemo values(1003,'Let us C'); Query OK, 1 row affected (0.16 sec)
SELECT文を実行すると、挿入されたすべてのレコードを確認できます。
mysql> select *from TruncateTableDemo;
実行結果は以下のとおりです。
+--------+---------------------+ | BookId | BookName | +--------+---------------------+ | 1001 | C in Dept | | 1002 | The C++ Programming | | 1003 | Let us C | +--------+---------------------+ 3 rows in set (0.00 sec)
TRUNCATE TABLEでレコードを全件削除する
先ほどの構文を使って、テーブル内の全レコードを削除してみましょう。
mysql> truncate table TruncateTableDemo; Query OK, 0 rows affected (0.93 sec)
コマンド実行後、本当にすべてのレコードが削除されたかどうかSELECT文で確認できます。
mysql> select *from TruncateTableDemo; Empty set (0.00 sec)
「Empty set」と表示されれば、テーブルからすべてのレコードが正常に削除されています。
TRUNCATEとDELETEの違いに注意
なお、DELETE FROM テーブル名; でも全レコードを削除できますが、両者には以下のような違いがあります。
- 処理速度: TRUNCATEはテーブルを再作成する方式のため、DELETEよりも高速です。
- WHERE句: DELETEは条件を指定できますが、TRUNCATEは常に全件削除です。
- AUTO_INCREMENT: TRUNCATEを実行すると連番(AUTO_INCREMENT)のカウンタも初期化されます。
条件なしでテーブルの中身を完全に空にしたい場合は、TRUNCATEを使用するのがベストプラクティスと言えます。
-
MySQLのDELETE文とIN句を組み合わせて1つのクエリで複数レコードを削除する方法
MySQLでは、IN()句を活用することで、複数の条件値に一致するレコードを1つのDELETEクエリでまとめて削除できます。個別に削除クエリを実行する必要がなく、効率的なデータ操作が可能になります。ここでは、サンプルテーブルを作成し、実際にIN()句を使ったレコード削除の手順を解説します。1. サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable1922 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20)
-
MySQLのストアドプロシージャでテーブルのレコードを表示する方法
MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT