MySQL-এ DELETE স্টেটমেন্টে টেবিল নাম ও কলাম নাম স্পষ্টভাবে নির্দিষ্ট করে রেকর্ড ডিলিট করা যায়। এটি JOIN বা সাবকোয়েরি-এ কলাম আম্বিগুইটি দূর করতে সাহায্য করে।
টেবিল তৈরি ও ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable (StudentName VARCHAR(100), StudentAge INT); Query OK, 0 rows affected (0.81 sec)
mysql> INSERT INTO DemoTable VALUES ('Chris', 21);
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES ('Robert', 20);
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES ('David', 22);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES ('Mike', 24);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES ('Sam', 19);
Query OK, 1 row affected (0.12 sec)
রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable;
আউটপুট:
+-------------+------------+ | StudentName | StudentAge | +-------------+------------+ | Chris | 21 | | Robert | 20 | | David | 22 | | Mike | 24 | | Sam | 19 | +-------------+------------+ 5 rows in set (0.00 sec)
টেবিল.কলাম সিনট্যাক্স দিয়ে ডিলিট
mysql> DELETE FROM DemoTable WHERE DemoTable.StudentName = 'Robert'; Query OK, 1 row affected (0.12 sec)
ডিলিট পর রেকর্ড
mysql> SELECT * FROM DemoTable;
ফলাফল:
+-------------+------------+ | StudentName | StudentAge | +-------------+------------+ | Chris | 21 | | David | 22 | | Mike | 24 | | Sam | 19 | +-------------+------------+ 4 rows in set (0.00 sec)
সিনট্যাক্স ও ব্যবহার
DELETE FROM table_name WHERE table_name.column_name = value;- একটি টেবিলে অপরিহার্য নয়, কিন্তু JOIN/সাবকোয়েরি-এ কলাম ডিসএম্বিগুয়েশনের জন্য বাধ্যতামূলক।
DELETE t1 FROM t1 JOIN t2 ON ... WHERE t1.col = val- মাল্টি-টেবিল ডিলিটে টেবিল আলিয়াস (t1) ব্যবহার করা ভালো।
TRUNCATE বনাম DELETE
TRUNCATE TABLE- সকল রো দ্রুত মুছে ফেলে (AUTO_INCREMENT রিসেট, ট্রিগার ফায়ার করে না, ROLLBACK অসম্ভব)।DELETE- শর্তানুযায়ী মুছে, ট্রিগার ফায়ার করে, ROLLBACK সম্ভব (InnoDB-এ)।