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 TABLE | TRUNCATE TABLE |
|---|---|---|
| ডেটা মুছে | হ্যাঁ | হ্যাঁ |
| কাঠামো মুছে | হ্যাঁ | না (রিক্রিয়েট করে) |
| রোলব্যাক সম্ভব | না (DDL) | না (DDL) |
| AUTO_INCREMENT রিসেট | N/A | হ্যাঁ (১ থেকে শুরু) |
| TRIGGER ফায়ার | না | না |
সুপারিশ: টেবিল আর দরকার নেইলে DROP, ডেটা শুধু মুছে কাঠামো রাখতে চাইলে TRUNCATE ব্যবহার করুন।