SQL DELETE Statement

🔹 تعریف

  • دستور DELETE برای حذف رکوردها از یک جدول استفاده می‌شود.

  • همراه با WHERE مشخص می‌کنیم کدام رکوردها حذف شوند.

  • اگر WHERE ننویسیم، همه رکوردهای جدول حذف می‌شوند (⚠️ خطرناک).

🔹 ساختار کلی

DELETE FROM table_name WHERE condition;

1️⃣ مثال ساده

جدول Customers:

CustomerIDNameCity
1AliTehran
2SaraShiraz
3RezaMashhad

کوئری:

DELETE FROM Customers WHERE CustomerID = 2;

🔹 مشتری با ID=2 حذف می‌شود.

2️⃣ حذف با شرط

DELETE FROM Customers WHERE City = 'Tehran';

🔹 تمام مشتری‌هایی که در شهر تهران هستند حذف می‌شوند.

3️⃣ حذف همه رکوردها (⚠️ خطرناک!)

DELETE FROM Customers;

🔹 همه رکوردهای جدول پاک می‌شوند ولی ساختار جدول باقی می‌ماند.

4️⃣ حذف رکوردهای NULL

DELETE FROM Customers WHERE City IS NULL;

🔹 تمام رکوردهایی که ستون City مقدار NULL دارند حذف می‌شوند.

🔹 تفاوت DELETE و TRUNCATE

ویژگیDELETETRUNCATE
استفاده از WHERE✅ دارد❌ ندارد (همه حذف می‌شوند)
سرعتکندتر (سطر به سطر حذف می‌کند)خیلی سریع‌تر
بازگردانیقابل بازگردانی با ROLLBACK (اگر در تراکنش باشد)قابل بازگردانی نیست

🔹 نکات مهم

  1. همیشه با WHERE استفاده کن تا فقط رکوردهای مورد نظر حذف شوند.

  2. اگر قصد پاک کردن همه رکوردها داری و جدول کوچک است → از DELETE
    ولی اگر جدول خیلی بزرگ است و می‌خواهی سریع خالی شود → از TRUNCATE.

  3. بعد از DELETE معمولاً باید دستور COMMIT (در بعضی DBMSها) اجرا شود.