কম্পিউটার টিউটোরিয়াল

MySQL TRUNCATE এবং DELETE কমান্ডের পার্থক্য কী?


আমরা জানি TRUNCATE টেবিলের কাঠামো না মুছে সব রো মুছে ফেলে। একই কাজ DELETE কমান্ড দিয়েও করা যায়। কিন্তু PRIMARY KEY AUTO_INCREMENT-এর পুনরারম্ভ (re-initialization) ক্ষেত্রে দুটি কমান্ডের মধ্যে গুরুত্বপূর্ণ পার্থক্য আছে।

যদি একটি কলাম AUTO_INCREMENT এবং PRIMARY KEY CONSTRAINT সহ থাকে, তবে DELETE কমান্ড দিয়ে সব রো মুছলে টেবিল পুনরারম্ভ হয় না, অর্থাৎ নতুন রো ইনসার্ট করলে AUTO_INCREMENT নম্বর শেষ ইনসার্ট করা রো থেকে শুরু হবে। বিপরীতে, TRUNCATE ব্যবহার করলে টেবিল নতুন তৈরি হওয়ার মত রি-ইনিশিয়ালাইজ হয়। অর্থাৎ TRUNCATE এর পর নতুন রো ইনসার্ট করলে AUTO_INCREMENT নম্বর ১ থেকে শুরু হবে।

উদাহরণ

নিচের উদাহরণটি উপরের ধারণাটি প্রদর্শন করবে:

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)

  1. MySQL-এ AND এবং && অপারেটরের পার্থক্য কি? (স্ট্যান্ডার্ড vs মালিকানা সিনট্যাক্স)

  2. MySQL-এ TINYINT(1) এবং Boolean-এর পার্থক্য

  3. MySQL-এ != NULL এবং IS NOT NULL-এর পার্থক্য

  4. MySQL-এ AND ও OR অপারেটরের পার্থক্য রো রিট্রিভে