كيفية حذف البيانات في لغة الاستعلام البنيوية 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!