DELETE স্টেটমেন্টটি SQL এবং T-SQL-এ ব্যবহৃত একটি গুরুত্বপূর্ণ কমান্ড যা ডেটাবেস থেকে এক বা একাধিক রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়। এই কমান্ডটি ব্যবহৃত হলে, নির্দিষ্ট শর্তের ভিত্তিতে নির্বাচিত ডেটা ডেটাবেস থেকে স্থায়ীভাবে মুছে যায়।
ডেটা মুছে ফেলার সময় সতর্ক থাকতে হয়, কারণ একবার ডেটা মুছে গেলে তা পুনরুদ্ধার করা সাধারণত সম্ভব নয় (যতক্ষণ না ব্যাকআপ বা ট্রানজ্যাকশন লগ থাকে)।
১. DELETE স্টেটমেন্টের মৌলিক সিনট্যাক্স
DELETE FROM table_name WHERE condition;
- table_name: এখানে সেই টেবিলের নাম থাকবে, যেখান থেকে আপনি ডেটা মুছে ফেলতে চান।
- condition: এই শর্তের মাধ্যমে আপনি নির্ধারণ করবেন কোন রেকর্ডগুলি মুছে ফেলা হবে। যদি শর্ত দেওয়া না হয়, তবে টেবিলের সমস্ত রেকর্ড মুছে যাবে, যা খুবই বিপজ্জনক।
২. DELETE স্টেটমেন্টের উদাহরণ
উদাহরণ ১: একক রেকর্ড মুছে ফেলা
DELETE FROM Employees WHERE EmployeeID = 5;
এখানে Employees টেবিল থেকে EmployeeID ৫ এর সমান এমন একমাত্র রেকর্ড মুছে ফেলা হবে।
উদাহরণ ২: একাধিক রেকর্ড মুছে ফেলা
DELETE FROM Employees WHERE Position = 'Intern';
এখানে Employees টেবিল থেকে Position কলামে 'Intern' থাকা সমস্ত রেকর্ড মুছে ফেলা হবে।
উদাহরণ ৩: সমস্ত রেকর্ড মুছে ফেলা
DELETE FROM Employees;
এখানে কোনো শর্ত না দেওয়ায় Employees টেবিলের সমস্ত রেকর্ড মুছে ফেলা হবে। সতর্ক থাকুন, কারণ এটি টেবিলের সমস্ত ডেটা মুছে ফেলবে।
৩. DELETE এবং TRUNCATE মধ্যে পার্থক্য
- DELETE:
DELETEস্টেটমেন্ট শুধুমাত্র নির্বাচিত রেকর্ড মুছে ফেলে এবং টেবিলের অন্যান্য ডেটা অপরিবর্তিত থাকে।- এটি ট্রানজ্যাকশনাল এবং রোলব্যাক করা যায়।
DELETEস্টেটমেন্টের মাধ্যমে এক বা একাধিক রেকর্ড মুছে ফেলা সম্ভব।DELETEদিয়ে শর্ত অনুযায়ী রেকর্ড মুছে ফেলা যায়।
- TRUNCATE:
TRUNCATEটেবিলের সমস্ত রেকর্ড মুছে ফেলে, তবে এটি টেবিলের স্ট্রাকচার (কলাম, কনস্ট্রেইন্ট) অপরিবর্তিত রাখে।- এটি ফাস্ট এবং কম রিসোর্স ব্যবহার করে।
TRUNCATEট্রানজ্যাকশনাল নয় এবং রোলব্যাক করা যায় না (যদি নাTRUNCATEটিDDLএর অংশ হয়)।- এটি শর্ত বা ফিল্টার প্রয়োগ করতে পারে না, এটি শুধুমাত্র পুরো টেবিল মুছে ফেলে।
৪. DELETE এর সাথে TRANSACTION ব্যবহার
T-SQL-এ DELETE এর সাথে TRANSACTION ব্যবহার করে আপনি ডেটা মুছে ফেলার পর তা নিশ্চিত করার আগে রোলব্যাক করতে পারেন। উদাহরণ:
BEGIN TRANSACTION;
DELETE FROM Employees WHERE EmployeeID = 10;
-- কমিটি করতে পারেন যদি ডেটা সঠিক থাকে
COMMIT;
-- অথবা কোনো সমস্যা হলে রোলব্যাক করতে পারেন
-- ROLLBACK;
এভাবে, যদি কোনো সমস্যা হয়, তাহলে আপনি ROLLBACK করতে পারেন এবং ডেটা পুনরুদ্ধার করতে পারবেন।
৫. DELETE এবং FOREIGN KEY
যদি আপনার টেবিলগুলির মধ্যে Foreign Key রিলেশন থাকে, তবে আপনি DELETE করার সময় সাবধান থাকতে হবে। কারণ এক টেবিলের ডেটা অন্য টেবিলের ডেটার সাথে সম্পর্কিত হতে পারে। যদি আপনি সম্পর্কিত রেকর্ড মুছে ফেলতে চান, তবে আপনাকে ON DELETE CASCADE কনস্ট্রেইন্ট ব্যবহার করতে হবে যাতে সম্পর্কিত রেকর্ডও অটোমেটিক্যালি মুছে যায়।
ALTER TABLE Orders
ADD CONSTRAINT FK_CustomerOrder
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)
ON DELETE CASCADE;
এটি করলে, Customers টেবিল থেকে কোনো CustomerID মুছে ফেললে, Orders টেবিলের সম্পর্কিত CustomerID সহ রেকর্ডও অটোমেটিক্যালি মুছে যাবে।
৬. DELETE প্রক্রিয়া অপ্টিমাইজেশন
ব্যাচে ডেটা মুছে ফেলা: যদি টেবিলের মধ্যে অনেক রেকর্ড থাকে, তবে একসাথে অনেক ডেটা মুছে ফেললে ডেটাবেসের পারফরম্যান্সে প্রভাব পড়তে পারে। তখন আপনি ব্যাচে ডেটা মুছে ফেলতে পারেন, যেমন:
DELETE FROM Employees WHERE EmployeeID BETWEEN 1 AND 100;- INDEX ব্যবহার: DELETE করার সময় ইনডেক্স ব্যবহার করলে ডেটাবেস আরও দ্রুত মুছে ফেলতে পারবে।
সারাংশ
T-SQL এর DELETE স্টেটমেন্ট ডেটাবেস থেকে রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়। এটি WHERE শর্তের মাধ্যমে নির্দিষ্ট রেকর্ড মুছে ফেলে, তবে যদি কোনো শর্ত না দেওয়া হয়, তবে টেবিলের সমস্ত রেকর্ড মুছে ফেলবে। TRUNCATE এর তুলনায় DELETE বেশি নমনীয়, তবে একটু ধীরগতি হতে পারে। DELETE স্টেটমেন্টের সাথে TRANSACTION ব্যবহার করে আপনি রোলব্যাক করতে পারেন এবং ডেটা নিরাপদভাবে মুছে ফেলতে পারেন।
Read more