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

MySQL-এ DROP TABLE বনাম TRUNCATE TABLE: পার্থক্য কী?

MySQL-এ টেবিল মুছে ফেলার দুটি প্রধান কমান্ড আছে: DROP TABLE এবং TRUNCATE TABLE। এদের পার্থক্য বোঝা জরুরি।

DROP TABLE - পুরো টেবিল মুছে ফেলা

DROP TABLE টেবিলের কাঠামো (structure), ডেটা, ইনডেক্স, ট্রিগার, কনস্ট্রেইন্ট - সবকিছুই মুছে ফেলে। টেবিল আর বিদ্যমান থাকে না।

উদাহরণ

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name VARCHAR(20)
    -> );
mysql> INSERT INTO DemoTable(Name) VALUES('Larry');
mysql> INSERT INTO DemoTable(Name) VALUES('Chris');
mysql> SELECT * FROM DemoTable;
+----+-------+
| Id | Name  |
+----+-------+
|  1 | Larry |
|  2 | Chris |
+----+-------+

DROP TABLE চালান

mysql> DROP TABLE DemoTable;
Query OK, 0 rows affected (0.18 sec)

এখন ডেটা বা কাঠামো কিছুই পাওয়া যাবে না

mysql> SELECT * FROM DemoTable;
ERROR 1146 (42S02): Table 'hb_student_tracker.DemoTable' doesn't exist

mysql> DESC DemoTable;
ERROR 1146 (42S02): Table 'hb_student_tracker.DemoTable' doesn't exist

TRUNCATE TABLE - শুধু ডেটা মুছে কাঠামো রাখা

TRUNCATE TABLE টেবিলের সব ডেটা মুছে ফেলে কিন্তু টেবিলের কাঠামো (structure) বാക്കি রাখে। এটি টেবিলটি পুনরায় তৈরি করে (recreate)।

উদাহরণ

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> FirstName VARCHAR(20)
    -> );
mysql> INSERT INTO DemoTable(FirstName) VALUES('Chris');
mysql> INSERT INTO DemoTable(FirstName) VALUES('Robert');
mysql> SELECT * FROM DemoTable;
+----+-----------+
| Id | FirstName |
+----+-----------+
|  1 | Chris     |
|  2 | Robert    |
+----+-----------+

TRUNCATE TABLE চালান

mysql> TRUNCATE TABLE DemoTable;
Query OK, 0 rows affected (0.06 sec)

ফলাফল: ডেটা নেই, কিন্তু কাঠামো আছে

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

mysql> DESC DemoTable;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| Id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| FirstName | varchar(20) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

তুলনামূলক সারসংক্ষেপ

বিষয়DROP TABLETRUNCATE TABLE
ডেটা মুছেহ্যাঁহ্যাঁ
কাঠামো মুছেহ্যাঁনা (রিক্রিয়েট করে)
রোলব্যাক সম্ভবনা (DDL)না (DDL)
AUTO_INCREMENT রিসেটN/Aহ্যাঁ (১ থেকে শুরু)
TRIGGER ফায়ারনানা

সুপারিশ: টেবিল আর দরকার নেইলে DROP, ডেটা শুধু মুছে কাঠামো রাখতে চাইলে TRUNCATE ব্যবহার করুন।

  1. MySQL-এ টেবিলের কাঠামো ক্লোন করা

  2. MySQL-এ REPLACE দিয়ে শুধু শতাংশ চিহ্ন (%) মুছে ফেলা

  3. MySQL-এ RAND() ব্যবহার করে টেবিলের রেকর্ড র‍‍‍্যান্ডমলি শাফল করা

  4. MySQL টেবিল থেকে ইন্ডেক্স সরানো