ホームページ  >  記事  >  データベース  >  MySQL の TRUNCATE コマンドと DELETE コマンドの違いは何ですか?

MySQL の TRUNCATE コマンドと DELETE コマンドの違いは何ですか?

WBOY
WBOY転載
2023-09-12 14:13:02848ブラウズ

MySQL TRUNCATE 和 DELETE 命令有什么区别?

ご存知のとおり、TRUNCATE はデータベースからテーブルの構造を削除せずにすべての行を削除します。 DELETE コマンドを使用して、テーブルからすべての行を削除することもできます。ただし、2 つのコマンド間の PRIMARY KEY AUTO_INCRMENT の再初期化には大きな違いがあります。

カラムが PRIMARY KEY CONSTRAINT を使用した AUTO_INCRMENT で定義されていると仮定すると、DELETE コマンドを使用してすべての行が削除されるとき、つまり新しい行が入力されるとき、AUTO_INCREMENT 番号が初期化テーブルは再初期化されません。最後に挿入された行から削除されます。対照的に、TRUNCATE を使用すると、テーブルは新しく作成されたテーブルと同様に再初期化されます。これは、TRUNCATE コマンドを使用して新しい行を挿入した後、AUTO_INCRMENT の数値が 1 から始まることを意味します。

次の例は、上記の概念を示します -

mysql> Create table Testing(Id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name Varchar(20));
Query OK, 0 rows affected (0.15 sec)

mysql> Insert into testing(Name) values('Gaurav'),('Rahul'),('Aarav'),('Yashraj'),('Manak');
Query OK, 5 rows affected (0.09 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> Select * from testing;

+----+---------+
| Id | Name    |
+----+---------+
| 1  | Gaurav  |
| 2  | Rahul   |
| 3  | Aarav   |
| 4  | Yashraj |
| 5  | Manak   |
+----+---------+

5 rows in set (0.00 sec)

mysql> Delete from testing where id >=4;
Query OK, 2 rows affected (0.04 sec)

mysql> Select * from testing;

+----+--------+
| Id | Name   |
+----+--------+
| 1  | Gaurav |
| 2  | Rahul  |
| 3  | Aarav  |
+----+--------+

3 rows in set (0.00 sec)

mysql> Insert into testing(Name) values('Harshit'),('Lovkesh');
Query OK, 2 rows affected (0.06 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> Select * from testing;

+----+---------+
| Id | Name    |
+----+---------+
| 1  | Gaurav  |
| 2  | Rahul   |
| 3  | Aarav   |
| 6  | Harshit |
| 7  | Lovkesh |
+----+---------+

5 rows in set (0.00 sec)

mysql> Truncate table testing;
Query OK, 0 rows affected (0.10 sec)

mysql> Insert into testing(Name) values('Harshit'),('Lovkesh'),('Ram'),('Gaurav');
Query OK, 4 rows affected (0.11 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> Select * from testing;

+----+---------+
| Id | Name    |
+----+---------+
| 1  | Harshit |
| 2  | Lovkesh |
| 3  | Ram     |
| 4  | Gaurav  |
+----+---------+

4 rows in set (0.00 sec)

以上がMySQL の TRUNCATE コマンドと DELETE コマンドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。