تخطَّ إلى المحتوى

DELETE

حذف صفوف من جدول DELETE

DELETE يحذف الصفوف المطابقة لشرط WHERE من جدول — بلا WHERE يحذف كل صفوف الجدول مع إبقاء بنيته كما هي.

DELETE يزيل صفوفًا كاملة من جدول حسب شرط WHERE، ويختلف عن TRUNCATE (الذي يفرّغ الجدول كاملًا بسرعة أكبر ودون إمكانية استخدام WHERE) وعن DROP TABLE (الذي يحذف الجدول وبنيته نهائيًا).

يمكن دمج DELETE مع استعلام فرعي في WHERE لحذف صفوف بناءً على شرط في جدول آخر، وبعض قواعد البيانات (مثل PostgreSQL) تدعم RETURNING لإرجاع الصفوف المحذوفة مباشرة بعد الحذف.

الصياغة

DELETE FROM table WHERE condition;

📄 مثال

DELETE FROM orders
WHERE status = 'cancelled' AND created_at < '2024-01-01';

أهم النقاط

النقطةالوظيفة
DELETE بدون WHEREيحذف كل صفوف الجدول، لكن الجدول نفسه يبقى موجودًا ببنيته
DELETE مع استعلام فرعيحذف صفوف بناءً على شرط في جدول آخر
RETURNING(PostgreSQL) يُرجع الصفوف المحذوفة مباشرة بعد تنفيذ الحذف

💡 نصائح عملية

  • اختبر شرط الحذف بـ SELECT أولًا قبل تحويله إلى DELETE — خطوة بسيطة تمنع أخطاء لا رجعة فيها
  • لحذف كل صفوف جدول كبير بسرعة بلا شرط، TRUNCATE عادة أسرع من DELETE بلا WHERE

⚠️ أخطاء شائعة

  • نسيان WHERE فيُحذف الجدول بالكامل بأمر واحد
  • الخلط بين DELETE (يحذف صفوفًا) وDROP TABLE (يحذف الجدول وبنيته نهائيًا)

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار SQL الكامل بالعربي.