PHP | MySQLのTRUNCATE TABLEでテーブルを空にする方法

PHP,PHP MySQL

PHPでMySQLのTRUNCATE TABLEを使ってデータベースにあるテーブルを空にする(全件削除&再作成)方法とサンプルコードを紹介しています。

確認環境

エックスサーバー
PHP 8.016

TRUNCATE TABLEでテーブルを空にする

TRUNCATE TABLEはテーブルを空にして初期化します。

TRUNCATE TABLEを使ったPHPのサンプルコードは以下になります。

// クエリ
$sql = "TRUNCATE TABLE `table_name`";

// クエリを実行
$res = $mysqli->query($sql);

DELETEとの違い

DELETEでもテーブル内のデータを全件削除する事は可能ですが、TRUNCATE TABLEは初期化する事で空のテーブルとして再作成することができます。

例えば、AUTO_INCREMENTも0からになります。

phpMyAdminの操作でいうところの「テーブルを空にする」と同じ処理を実行します。

TRUNCATE TABLEの詳細な処理内容

TRUNCATE TABLEの詳細について、以下のページを参考にします。

MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.1.33 TRUNCATE TABLE ステートメント

  • テーブルを削除して再作成します。これは、特に大きなテーブルの場合、行を 1 つずつ削除するよりもはるかに高速です。
  • TRUNCATEは暗黙的なコミットを引き起こすため、ロールバックできません。
  • セッションがアクティブなテーブルロックを保持している場合、実行できません。
  • TRUNCATE TABLEは、テーブルまたはNDBテーブルを参照する他のテーブルからの制約がある場合に失敗します。同じ表の列間の外部キー制約は許可されます。
  • 操作後、行数は0が返されます。
  • 表形式ファイルが有効である限り、データ・ファイルまたは索引ファイルが破損している場合でも、TRUNCATE TABLEを使用して空のテーブルとして再作成することができます。
  • すべての値は開始値にリセットされます。これは、通常シーケンス値を再利用しない場合も当てはまります。
  • パーティションテーブルと一緒に使用すると、TRUNCATE TABLEはパーティション化を保持します。つまり、データ・ファイルと索引ファイルはドロップされて再作成されますが、パーティション定義は影響を受けません。
  • TRUNCATE TABLEはトリガーを呼び出しません。

PHP,PHP MySQL

Posted by Yousuke.U