MySQLテーブルからすべてのレコードを削除する方法|TRUNCATE文の使い方を解説
MySQLテーブルからすべてのレコードを削除する方法
MySQLのテーブルからすべてのレコードを削除したい場合は、TRUNCATE文を使用します。TRUNCATEはテーブル内の全行を高速に削除できるコマンドで、大量のデータを扱う場合に特に有効です。
TRUNCATE文の基本構文
TRUNCATE TABLE テーブル名;
この構文を実行すると、指定したテーブルからすべてのレコードが削除されます。実際の動作を確認するために、サンプルテーブルを作成してみましょう。
サンプルテーブルの作成
まず、以下のクエリでテーブルを作成します。
mysql> create table DeleteAllFromTable
-> (
-> PersonId int,
-> PersonName varchar(200)
-> );
Query OK, 0 rows affected (0.67 sec)
レコードの挿入
次に、INSERTコマンドを使ってテーブルにレコードを追加します。
mysql> insert into DeleteAllFromTable values(100,'Johnson');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DeleteAllFromTable values(101,'John');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DeleteAllFromTable values(102,'Carol');
Query OK, 1 row affected (0.47 sec)
mysql> insert into DeleteAllFromTable values(103,'Sam');
Query OK, 1 row affected (0.19 sec)
登録済みレコードの確認
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DeleteAllFromTable;
実行結果は以下の通りです。
+----------+------------+
| PersonId | PersonName |
+----------+------------+
| 100 | Johnson |
| 101 | John |
| 102 | Carol |
| 103 | Sam |
+----------+------------+
4 rows in set (0.00 sec)
4件のレコードが登録されていることが確認できます。
TRUNCATEで全レコードを削除する
それでは、TRUNCATEコマンドを使ってテーブルからすべてのレコードを削除します。
mysql> TRUNCATE TABLE DeleteAllFromTable;
Query OK, 0 rows affected (0.80 sec)
すべてのレコードが削除されたため、SELECT文を実行しても何も表示されません。
mysql> select *from DeleteAllFromTable;
Empty set (0.00 sec)
実行結果を見ると、テーブルにはレコードが一件も存在しないことがわかります。
補足:TRUNCATEとDELETEの違い
全レコードの削除にはDELETE文(例:DELETE FROM テーブル名;)も使えますが、両者には以下のような違いがあります。
- 処理速度:TRUNCATEはテーブルを再作成する形で削除するため、DELETEよりも高速です。
- WHERE句:DELETEは条件を指定して削除できますが、TRUNCATEは全行削除のみ可能です。
- ロールバック:DELETEはトランザクション内でロールバックできますが、TRUNCATEはDDL扱いのため基本的にロールバックできません。
- AUTO_INCREMENT:TRUNCATEを実行するとAUTO_INCREMENTカウンタが初期化されます。
条件を指定せずに全件削除したい場合は、TRUNCATEの利用を検討するとよいでしょう。
-
MySQLでテーブル列の全日付レコードに1年を追加する方法
MySQLでは、DATE_ADD()関数を使うことで、日付や日時の値に指定した期間を簡単に加算できます。この記事では、テーブル内のすべての日付レコードに1年を追加する方法を、具体的な手順とともに解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成します。ここでは、入社日を格納する JoiningDate カラムを持つテーブルを定義します。 mysql> create table DemoTable -> ( -> JoiningDate datetime -> ); Query OK, 0 rows affected (0.59
-
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)