MySQL データベース - MySQL TRUNCATE: テーブル レコードのクリア

MySQL には、テーブル内のデータを削除するための DELETE および TRUNCATE キーワードが用意されています。以下では、主に TRUNCATE キーワードの使用について説明します。

TRUNCATE キーワードは、テーブルを完全に空にするために使用されます。その構文形式は次のとおりです。

TRUNCATE [TABLE] 表名

このうち、TABLE キーワードは省略できます。

例 1

新しいテーブル tb_student_course を作成し、データとクエリを挿入します。SQL ステートメントと実行結果は次のとおりです。

mysql> CREATE TABLE `tb_student_course` (
    -> `id` int(4) NOT NULL AUTO_INCREMENT,
    -> `name` varchar(25) NOT NULL,
    -> PRIMARY KEY (`id`)
    -> );
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO tb_student_course(name) VALUES ('Java'),('MySQL'),('Python');
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM tb_student_course;
+----+--------+
| id | name   |
+----+--------+
|  1 | Java   |
|  2 | MySQL  |
|  3 | Python |
+----+--------+
3 rows in set (0.00 sec)

TRUNCATE ステートメントを使用して、tb_student_course テーブルのレコードをクリアします。SQL ステートメントと実行結果は次のとおりです。

mysql> TRUNCATE TABLE tb_student_course;
Query OK, 0 rows affected (0.04 sec)

mysql> SELECT * FROM tb_student_course;
Empty set (0.00 sec)

TRUNCATE と DELETE の違い

論理的に言えば、TRUNCATE ステートメントは DELETE ステートメントと同じ効果がありますが、場合によっては、2 つのステートメントが異なる方法で使用されます。

  • DELETE は DML タイプのステートメントであり、TRUNCATE は DDL タイプのステートメントです。これらは、テーブル内のデータをクリアするために使用されます。
  • DELETE はレコードを 1 行ずつ削除します。TRUNCATE は元のテーブルを直接削除し、テーブル内のデータを行ごとに削除するのではなく、同一の新しいテーブルを再作成し、DELETE よりも高速にデータを実行します。したがって、テーブル内のすべてのデータ行を削除する必要がある場合は、TRUNCATE ステートメントを使用して実行時間を短縮してください。
  • DELETE がデータを削除した後、データはイベント ロールバックで取得できます。TRUNCATE はトランザクション ロールバックをサポートしておらず、削除後にデータを取得することはできません。
  • DELETE がデータを削除した後、システムは自己インクリメント フィールドのカウンターをリセットしません。TRUNCATE がテーブル レコードをクリアした後、システムは自己インクリメント フィールドのカウンターをリセットします。
  • DELETE は、WHERE 句で条件を指定して一部のデータを削除できるため、より広く使用されていますが、TRUNCATE は WHERE 句をサポートしておらず、全体を削除することしかできません。
  • DELETE は削除された行数を返しますが、TRUNCATE は無意味な 0 しか返しません。

要約する

テーブルが不要な場合は DROP を使用し、テーブルは保持したいがすべてのレコードを削除したい場合は TRUNCATE を使用し、いくつかのレコードを削除したい場合は DELETE を使用します。

ダーク ホース プログラマー MySQL データベース エントリから習熟まで、mysql のインストールから高度な mysql まで、mysql の最適化をすべて網羅

おすすめ

転載: blog.csdn.net/Itmastergo/article/details/130461629