English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、SQLを使用してテーブルからすべての行を迅速に削除する方法を学びます。
TRUNCATE TABLE文は、DELETと比較してテーブルからすべての行を削除する方が速いです。論理的には、TRUNCATE TABLEは以下に似ています:DELETEありませんWHERE子句の文を使用します。
TRUNCATE TABLE文は、テーブルからすべての行を削除しますが、テーブルの構造や列、制約、索引などは変更されません。テーブルとデータを削除するには、以下のDROP TABLE操作を行う場合は、慎重に行ってください。
TRUNCATE TABLEの基本的な文法:
TRUNCATE TABLE table_name;
データベースのテーブルに対してクリア操作を行ってみましょう。
データベースに以下のテーブルがありますemployee以下の記録を含むテーブルがあります:
+--------+--------------+------------+--------+---------+ | emp_id | emp_name | hire_date | salary | dept_id | +--------+--------------+------------+--------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 5000 | 4 | | 2 | Tony Montana | 2002-07-15 | 6500 | 1 | | 3 | Sarah Connor | 2005-10-18 | 8000 | 5 | | 4 | Rick Deckard | 2007-01-03 | 7200 | 3 | | 5 | Martin Blank | 2008-06-24 | 5600 | NULL | +--------+--------------+------------+--------+---------+
以下のコマンドは、以下から:employeesテーブルからすべての行を削除する:
TRUNCATE TABLE employees;
上記のSQL文を実行した後、以下から試みる場合、employeeテーブル記録を選択空の結果セットが得られます。
DELETEとTRUNCATE TABLEは同じ効果のように見えるが、動作方法が異なります。これら2つの文の主な違いは以下の通りです:
TRUNCATE TABLE文はテーブルを削除し再作成し、自動増分値を初期値(通常は}}にリセットします。1)。
DELETEはオプションのWHERE子句を使用して削除する行をフィルタリングできますが、TRUNCATE TABLEはWHERE子句をサポートせず、すべての行を削除します。
TRUNCATE TABLEはDELETEよりも速く、使用するシステムリソースも少なく、DELETEは影響を受けた行数を生成して、各行を逐次削除し、データベースログに各削除行のエントリを記録しますが、TRUNCATE TABLEはすべての行を削除し、他の情報を提供しません。
ヒント:すべての行を削除して、テーブル全体を再作成したい場合は、TRUNCATE TABLEを使用します。特定の条件に基づいて行数が限られている場合や、自動増分をリセットしたくない場合、またはDELETEを使用します。