কম্পিউটার

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


আমরা জানি যে TRUNCATE ডাটাবেস থেকে টেবিলের গঠন অপসারণ না করেই সমস্ত সারি সরিয়ে ফেলবে। টেবিল থেকে সমস্ত সারি মুছে ফেলার ক্ষেত্রে DELETE কমান্ডের সাহায্যে একই কাজ করা যেতে পারে। কিন্তু উভয় কমান্ডের মধ্যে প্রাথমিক কী AUTO_INCREMENT-এর পুনঃপ্রবর্তনের একটি উল্লেখযোগ্য পার্থক্য রয়েছে।

ধরুন একটি কলামকে AUTO_INCREMENT সংজ্ঞায়িত করা হয়েছে যার প্রাথমিক কী সীমাবদ্ধতা রয়েছে, তাহলে DELETE কমান্ড সহ সমস্ত সারি মুছে দিলে টেবিলটি পুনরায় আরম্ভ হবে না অর্থাৎ নতুন সারি প্রবেশ করালে, AUTO_INCREMENT নম্বরটি শেষ সন্নিবেশিত সারির পরে শুরু হবে। বিপরীতে, TRUNCATE ব্যবহার করার সময়, টেবিলটি একটি নতুন তৈরি টেবিলের মতো পুনরায় শুরু হবে। এর মানে হল TRUNCATE কমান্ড ব্যবহার করার পরে এবং নতুন সারি ঢোকানোর পরে AUTO_INCREMENT নম্বর 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)

  1. MySQL এ 'AND' এবং '&&' এর মধ্যে পার্থক্য?

  2. মাইএসকিউএল-এ TINYINT(1) এবং বুলিয়ানের মধ্যে পার্থক্য কী?

  3. MySQL এ!=NULL এবং IS NOT NULL এর মধ্যে পার্থক্য কি?

  4. সারি পুনরুদ্ধার করার সময় MySQL-এ AND, OR অপারেটরের মধ্যে পার্থক্য কী?