ساختار کلی دستور DELETE
DELETE FROM TableName WHERE condition;
بخشهای اصلی دستور DELETE:
- DELETE FROM: مشخص میکند که از کدام جدول میخواهیم رکوردها را حذف کنیم.
- WHERE (اختیاری): شرایطی که رکوردها بر اساس آن حذف میشوند. اگر این بخش را مشخص نکنید، تمام رکوردهای جدول حذف خواهند شد.
مثالهای کاربردی:
مثال ۱: حذف یک رکورد خاص
فرض کنید جدولی به نام Employees
داریم که شامل ستونهای EmployeeID
، FirstName
، LastName
و Position
است. اگر بخواهیم کارمندی با EmployeeID
برابر با 5 را حذف کنیم:
DELETE FROM Employees WHERE EmployeeID = 5;
این دستور رکوردی که EmployeeID
آن 5 است را از جدول Employees
حذف میکند.
مثال ۲: حذف رکوردهای بر اساس شرط
اگر بخواهیم تمام کارمندانی که در بخش Sales
کار میکنند را حذف کنیم:
DELETE FROM Employees WHERE Department = 'Sales';
این دستور تمام رکوردهایی که مقدار Department
آنها Sales
است را حذف میکند.
مثال ۳: حذف تمام رکوردهای جدول
اگر بخواهیم تمام رکوردهای جدول Employees
را حذف کنیم:
توجه: استفاده از دستور بالا بدون شرط WHERE
تمام رکوردهای جدول را حذف میکند، اما ساختار جدول و ستونها باقی میماند.
مثال ۴: استفاده از شرطهای پیچیدهتر
اگر بخواهیم تمام کارمندانی که سن آنها بیشتر از 60 سال است و در بخش HR
کار میکنند را حذف کنیم:
DELETE FROM Employees WHERE Age > 60 AND Department = 'HR';
مثال ۵: حذف با استفاده از زیرپرسش (Subquery)
فرض کنید میخواهیم تمام کارمندانی را حذف کنیم که در شهرهایی کار میکنند که در جدول Offices
مشخص شدهاند و این شهرها در کشور USA
نیستند:
DELETE FROM Employees WHERE OfficeID IN ( SELECT OfficeID FROM Offices WHERE Country <> 'USA' );
نکات مهم:
-
اهمیت WHERE: همیشه هنگام استفاده از دستور DELETE
مطمئن شوید که شرط WHERE
را به درستی مشخص کردهاید تا از حذف ناخواسته دادهها جلوگیری کنید.
-
پشتیبانگیری (Backup): قبل از انجام عملیات حذف گسترده، از دادههای خود پشتیبان تهیه کنید.
-
استفاده از TRANSACTION: میتوانید از تراکنشها برای اطمینان از قابلیت بازگشت (Rollback) در صورت وقوع خطا استفاده کنید:
BEGIN TRANSACTION; DELETE FROM Employees WHERE Department = 'Sales'; COMMIT; ROLLBACK;
-
حذف تمام رکوردها با TRUNCATE: اگر میخواهید تمام رکوردهای یک جدول را حذف کنید و قصد دارید فضای اشغال شده را آزاد کنید، میتوانید از دستور TRUNCATE TABLE
استفاده کنید که سریعتر است:
TRUNCATE TABLE Employees;
توجه: TRUNCATE TABLE
قابل بازگشت (Rollback) نیست و باید با احتیاط استفاده شود.
خلاصه:
دستور DELETE
ابزاری قدرتمند برای حذف رکوردها از جداول پایگاه داده است. با درک صحیح از نحوه استفاده و اعمال شرایط مناسب، میتوانید دادهها را به صورت ایمن و کارآمد مدیریت کنید.