العودة إلى الدورة

حذف البيانات (DELETE مقابل TRUNCATE)

أساسيات قواعد البيانات: من الصفر إلى الاحتراف

الدرس 22: حذف البيانات (DELETE مقابل TRUNCATE)

نغطي طريقتين رئيسيتين لإزالة البيانات من الجداول، كلاهما من DML (DELETE) و DDL (TRUNCATE).

1. DELETE Statement (DML)

تزيل DELETE الصفوف من جدول بناءً على شرط WHERE. مثل UPDATE، يؤدي حذف WHERE إلى إزالة جميع الصفوف، ولكنه أبطأ من TRUNCATE لأنه يسجل كل عملية حذف (مما يسمح بالتراجع).

بناء الجملة

sql DELETE FROM [table_name] WHERE [condition];

مثال: حذف الحسابات غير النشطة

إزالة جميع العملاء الذين لم يقدموا طلبًا منذ عام 2020.

sql DELETE FROM Customers WHERE LastOrderDate < '2020-01-01';

2. TRUNCATE TABLE (DDL)

تزيل TRUNCATE TABLE جميع الصفوف من جدول بسرعة وتعيد تعيين أي عدادات تتزايد تلقائيًا. إنها أسرع بكثير من DELETE لأنها تتعامل مع البيانات في أجزاء أكبر، ولكنها عادةً لا يمكن التراجع عنها (Rollback).

  • TRUNCATE هو أمر DDL لأنه يغير حالة هيكل الجدول (تتم إعادة تعيين العداد).

بناء الجملة

sql TRUNCATE TABLE [table_name];

الاختلافات الرئيسية

الميزةDELETETRUNCATE
السرعةأبطأ (تسجل صفًا بصف)أسرع بكثير (تلغي تخصيص التخزين)
عبارة WHEREنعم، تسمح بالتصفيةلا، تزيل كل شيء
التراجع (Rollback)نعم (بشكل عام)لا (بشكل عام، حسب نظام DBMS)
إعادة تعيين عداد PKلانعم
النوعDMLDDL

تحذير: استخدم TRUNCATE بحذر شديد، حيث تختفي البيانات عادةً بشكل دائم.