MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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を使用するのがベストプラクティスと言えます。

  1. 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)

  2. MySQLのストアドプロシージャでテーブルのレコードを表示する方法

    MySQLでは、ストアドプロシージャ内にSELECT文を組み込むことで、テーブルのレコードを簡単に表示できます。ストアドプロシージャを活用すると、よく使うクエリを再利用可能な形で保存できるため、作業の効率化につながります。ここでは、実際の手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成します。mysql> create table DemoTable1933 ( ClientName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERT