كيفية حذف البيانات في لغة الاستعلام البنيوية SQL


كيفية حذف البيانات في لغة الاستعلام البنيوية SQL

يلا بينا ندخل في الموضوع على طول. لما تحتاج تحذف بيانات من جدول في SQL، عندك كذا طريقة، وكل طريقة ليها استخدامها. ركز معايا عشان تعرف إمتى تستخدم إيه بالظبط.

1. استخدام DELETE لحذف صفوف معينة

دي الطريقة الأكثر شيوعاً والأكثر أماناً لحذف صف أو أكثر بناءً على شروط معينة. بتستخدم جملة DELETE FROM متبوعة باسم الجدول، وبعدين جملة WHERE عشان تحدد الصفوف اللي عايز تحذفها.

مثال: حذف عميل معين بمعرف ID

DELETE FROM Customers
WHERE CustomerID = 101;

هنا، الأمر ده هيحذف العميل اللي الـ CustomerID بتاعه 101 بس.

مثال: حذف كل المنتجات اللي سعرها أقل من 10

DELETE FROM Products
WHERE Price < 10.00;

ملاحظة مهمة جداً:

لو استخدمت DELETE FROM بدون جملة WHERE، هتحذف كل البيانات من الجدول! ده خطير جداً ومفروض تتجنبه إلا لو كنت متأكد 100% إنك عايز تفضي الجدول بالكامل.
مثال (لا تنفذه إلا لو كنت تعرف ما تفعله):
DELETE FROM Orders;
الأمر ده هيفضي جدول Orders بالكامل.

2. استخدام TRUNCATE TABLE لتفريغ الجدول بسرعة

الأمر TRUNCATE TABLE بيستخدم عشان يحذف كل الصفوف من الجدول بسرعة وكفاءة عالية. الفرق الرئيسي بينه وبين DELETE بدون WHERE هو إن TRUNCATE أسرع بكتير وبيستهلك موارد أقل، خصوصاً مع الجداول الكبيرة.

ليه أسرع؟ لأنه بيعمل إعادة تهيئة (reallocate) لمساحة الجدول كلها مرة واحدة، كأنك بتمسح السبورة بالكامل. كمان، TRUNCATE لا يمكن التراجع عنه (لا يدعم ROLLBACK) في معظم قواعد البيانات زي DELETE.

مثال: تفريغ جدول المستخدمين

TRUNCATE TABLE Users;

ملاحظة:

TRUNCATE TABLE بيحذف كل البيانات من الجدول لكن بيحافظ على هيكل الجدول (الأعمدة، المفاتيح، الفهارس). يعني الجدول بيفضل موجود بس فاضي.

3. استخدام DROP TABLE لحذف الجدول بالكامل

ده الأمر الأقوى والأكثر خطورة. DROP TABLE مش بس بيحذف البيانات، ده بيحذف الجدول بالكامل من قاعدة البيانات، بما في ذلك هيكله، كل الأعمدة، القيود، الفهارس، كل حاجة. كأنك بتشيل الورقة من الدفتر خالص.

مثال: حذف جدول الموردين بالكامل

DROP TABLE Suppliers;

تحذير شديد:

استخدام DROP TABLE أمر لا رجعة فيه تقريباً (إلا لو عندك نسخة احتياطية). تأكد 1000% إنك عايز تحذف الجدول بالكامل قبل ما تستخدمه.

ملخص سريع ومقارنة

  • DELETE: بيحذف صفوف معينة (مع WHERE) أو كل الصفوف (بدون WHERE). بطيء نسبياً مع الجداول الكبيرة، ويمكن التراجع عنه.
  • TRUNCATE TABLE: بيحذف كل الصفوف بسرعة فائقة، ولا يمكن التراجع عنه. بيحافظ على هيكل الجدول.
  • DROP TABLE: بيحذف الجدول بالكامل (الهيكل والبيانات). لا يمكن التراجع عنه.

أتمنى يكون الدرس ده وضحلك الفرق كويس وإمتى تستخدم كل أمر. دايماً خليك حذر وانت بتتعامل مع أوامر الحذف في SQL!