![]() |
استعلامات الحذف Delete Queries إعداد : محمد طاهر |
استعلام الحذف Delete Queries
لحذف مجموعة من السجلات من جدول أو أكثر ، و يقوم بحذف السجل بالكامل
أولا : الحذف باستخدام استعلام يمثل جدول واحد
اي أن المعايير الموجودة فى الاستعلام كلها من نفس الجدول الذي سنحذف منه .
لكي نقوم بعمل استعلام حذف لحذف طلبيات لها خاصية معينة ، نقوم بعمل استعلام عرض ( تحديد ) كما سبق ، و نختار ال * من جدول ال orders ، ثم نحدد المعايير المطلوبة لتحديد السجلات التي سيتم حذفها
و و هنا سنختار أن بلد الشحن = البرازيل مثلا
بأن نكتب فى خانة المعيار لحقل ShipCountry كلمة "brazil"
و هذا الحقل المستخم كمعيار criteria موجود فى نفس الجدول الذي سنحذف منه السجلات
و بذلك تكون جملة الاس كيو ال
SELECT
Orders.*, Orders.ShipCountry
FROM Orders
WHERE (((Orders.ShipCountry)="brazil"));
و طبعا لا داعي لتكرار استدعاء حقل ShipCountry
فقط تم استدعاء كل حقول الجدول
باستخدام ال *
فنلغي علامة الاختيار من امام حقل ShipCountry الذي سنتخدمه للمعيار دون عرضه
أو نعدل جملة الاس كيو ال مباشرة لتصبح
SELECT
Orders.*
FROM Orders
WHERE (((Orders.ShipCountry)="brazil"));
و لكن هذه الخطوة ( ازالة الحقل الثاني لن تؤثر ما دمنا سنحوله الي استعلام حذف ) - جرب الحالتين بنفسك كما سيلي
ثم قبل أن نحول الاستعلام الي استعلام حذف ، نعرض السجلات المختارة للتأكد منها
و ذلك بالضغط علي ايقونة العرض
فى وضع datasheet view
أو من قائمة view
تحويل استعلام التحديد الي استعلام حذف
ثم بعد
التأكد من صحة الاختيار
يأتي دور تعديل نوع الاستعلام
، من وضع تصميم الاستعلام نفتح ايقونة نوع الاستعلام
، و نختار استعلام حذف
delete query .
ملاحظة : نلاحظ أن الخطوة الاولي فى تكوين استعلام حذ ف هي تصميم استعلام تحديد عادي ثم نحول نوع الاستعلام ، و نفس هذا الاجراء نستخدمه مع استعلامات التحديث و الاضافة و تكوين جدول ، و استعلام الجداول المحورية ، الا أن الأخير يمكن تكوينه باستخدام المعالج كما سبق و تحدثنا
فتتحول الشاشة الي التالي
ثم نحفظ الاستعلام
باسم q1
، و الان الاستعلام جاهز للتنفيذ ، و لتنفيذه نضغط علي علامة التعجب الحمراء
فى الايقونة الي يمين
نوع الاستعلام
و بالضغط علي هذه الايقونة ستظهر رسالة تأكيد للحذف ثم بعد ذلك يتم الحذف
و نلاحظ قبل أن الجدول الذي سنحذف منه كل السجلات أمام خانة delete كتب أمامه From و م استخدم كمعيار كتب أمامه Where . كما أن From لابد أن تكتب امام ختيار جدول بالكامل أي * و ليس حقول ، و اذا حاولت اختيار حقول معها لن يسمح لك البرنامج بذلك .
و باختيار نوع الاستعلام استعلام حذف كما سبق ، تتحول جملة الاس كيو ال الي :
DELETE
Orders.*
FROM
Orders
WHERE
(((Orders.ShipCountry)="brazil"));
و طبعا اذا أردنا حذف كل سجلات الجدول ، نحذف الشرط :
DELETE
Orders.*
FROM
Orders
و كما ذكرنا أن المعايير الموجودة فى الاستعلام كلها من نفس الجدول الذي سنحذف منه .
هنا جدول الطلبيات orders يمثل جانب ( المتعدد ) من علاقته مع جدول العاملين Employees ، فكل موظف قام بتنفيذ أكثر من طلب فى جدول الطلبيات ، و سنقوم بعمل استعلام للحذف من جدول الطلبيات بناء علي شرط موجود فى الجدول نفسه ، أي لا دخل للجدول الآخر ( العاملين ) .
أيضا الجدول قد يكون له علاقة أخري يمثل هو فيها جانب ( الواحد ) من العلاقة ، مثل علاقته بجدول تفاصيل الطلبيات . مع ملاحظة أنه حال وجود علاقة مثل هذه الاخيرة سيؤثر الحذف من جدول الطلبيات علي الحقول المناظرة من جدول تفاصيل الطلبيات بالرغم من عدم تناول جدول التفاصيل فى الاستعلام ، و هذا فى حالة واحدة فقط هي أن يكون خيار Cascade Delete Related Records أي الحذف المتتالي مفعل فى العلاقة بينهما كما تحدثنا فى موضوع العلاقات .
ثانيا : الحذف باستخدام استعلام بين جدولين بينهما علاقة
سنتبع نفس الخطوات تحديدا و ذلك لحذف تفاصيل الطلبيات التي قام بها عامل معين
لذا سننشيء استعلام حذف لحذف جميع الطلبيات التي تمت بواسطة العامل رقم ، مثلا لنحذف جميع الطلبيات التي قام بها العامل رقم 1 فى استعلام اسمه q2
و تكون جملة الاس كيو ال المناظرة
DELETE Orders.*,
Employees.EmployeeID
FROM Employees INNER JOIN Orders ON
Employees.EmployeeID = Orders.EmployeeID
WHERE
(((Employees.EmployeeID)=1));
و هنا اذا تفحصنا جملة الاس كيو ال ، نجد أن عملية التحويل قد أضافت أجزاء الي الجملة ليس لها داعي ، و هي تلك المكتوبة باللون الأخضر . و يمكن حذفها
و بالرغم الي أن حذف هذه الاضافات أو تركها لن يؤثر ، الا أننا يجب أن نعرف التكوين المؤثر فى الجملة ، حيث اننا مستقبلا بإذن الله سنقوم بكتابة بعض جمل الاس كيو ال ضمن كود ال vba لتنفيذ أكود تحديث و ترحيل و اضافة ، لذا علينا أن نتعرف علي كيفية تكوين هذه الجمل ، و هذا ما دفعنا حتي الآن الي الاستمرار فى ذكر جمل الاس كيو ال المناظرة لأي استعلام ، أيضا بالنسبة للأقواس في جملة الشرط فسيكون استعمالها مفيدا حال وجود أكثر من شرط ووجود تعبيرات And , Or بينها.
ملاحظات هامة حول استعلامات الحذف
اذا قمت بتنفيذ استعلام حذف ، فلن يمكنك استرجاع البيانات المحذوفة ، لذا يعتبر من التطبيق الجيد أن تعرض الاستعلام الذي أعددته قبل أن تنفذه ،
و ذلك :
باختيار
نوع الاستعلام
من الايقونة Select Query
و تشغيله
من زر التنفيذ
أو
الطريقة الثانية : نختار عرض
البيانات فى وضع العرض datasheet view
و هي الاسهل
و بعد استعراض البيانات نعود ثانية الي استعلام الحذف :
باختيار ايقونة نوع الاستعلام و نختار الخيار الأخير Delete Query فى الحالة الاولي
او نضغط علي زر التصميم فى حالة الطريقة
الثانية
ثم نختار تنفيذ الاستعلام من علامة التعجب
الحمراء
فى الزر المجاور .
2- يجب أخذ نسخة احتياطية من البيانات قبل تنفيذ استعلامات الحذف ، تحسبا لأي خطأ
3- أثناء تنفيذ استعلام حذف فى جدول يمثل جانب ( الواحد ) من علاقة ( واحد الي متعدد ) و مع تفعيل خاصية cascade delete أي الحذف المتتالي سيتم حذف السجلات المناظرة من الجدول الذي يمثل جاني ( المتعدد ) من العلاقة
4- عند حذف سجلات من جداول مرتبطة ، مثل حذف السجلات المتكررة من أحد الجدولين ، يجب أن نغير خاصية unique records ( سجلات فريدة ) الي نعم .
------
تم
------