إسقاط مقابل اقتطاع

يعد Drop and Truncate عبارات SQL (لغة الاستعلام الهيكلية) تستخدم في أنظمة إدارة قواعد البيانات ، حيث نرغب في إزالة سجلات البيانات من قاعدة بيانات. كلا عبارات إسقاط و Truncate إزالة البيانات بالكامل في جدول وعبارة SQL ذات الصلة. عملية الحذف ليست فعالة في هذه الحالة لأنها تستخدم مساحات تخزين أكبر من Drop و Truncate.

في حال ، إذا أردنا تجاهل جدول في قاعدة بيانات بالكامل مع جميع البيانات الخاصة به ، فإن SQL تسمح لنا بتنفيذ هذا بسهولة باستخدام عبارة Drop. أمر الإفلات هو أمر DDL (لغة تعريف البيانات) ، ويمكن استخدامه لتدمير قاعدة بيانات أو جدول أو فهرس أو طريقة عرض حالية. يقوم بحذف المعلومات بالكامل في جدول ، وكذلك بنية الجدول من قاعدة البيانات. أيضًا ، قد نرغب في التخلص من جميع البيانات في جدول ببساطة ، ولكن بدون الجدول ، ويمكننا استخدام عبارة Truncate في SQL في مثل هذا السيناريو. يعد Truncate أيضًا أمر DDL ويقوم بحذف جميع الصفوف في جدول ولكنه يحتفظ بتعريف الجدول نفسه للاستخدام في المستقبل.

إسقاط القيادة

كما ذكرنا سابقًا ، فإن أمر Drop يزيل تعريف الجدول وجميع بياناته وقيود التكامل والفهارس والمشغلات وامتيازات الوصول التي تم إنشاؤها في هذا الجدول المحدد. لذلك يسقط الكائن الموجود من قاعدة البيانات بالكامل ، ولن تصبح العلاقات مع الجداول الأخرى صالحة بعد تنفيذ الأمر. كما أنه يزيل جميع المعلومات حول الجدول من قاموس البيانات. فيما يلي بناء الجملة النموذجي لاستخدام عبارة إسقاط في جدول.

انخفاض الجدول

يتعين علينا ببساطة استبدال اسم الجدول الذي نريد إزالته من قاعدة البيانات في المثال السابق لأمر Drop.

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

نظرًا لأن أمر Drop عبارة عن بيان التزام تلقائي ، فلن يمكن التراجع عن العملية بمجرد إطلاقها ولن يتم تشغيل أي مشغلات. عندما يتم إسقاط جدول ، فلن تكون جميع المراجع إلى الجدول صالحة ، وإذا أردنا استخدام الجدول مرة أخرى ، فيجب إعادة إنشائه بكل قيود السلامة وامتيازات الوصول. جميع العلاقات مع الجداول الأخرى ، كما يجب أن يكون موجودا مرة أخرى.

اقتطاع الأوامر

أمر Truncate هو أمر DDL ، ويقوم بإزالة كافة الصفوف في جدول دون أي شروط محددة من قبل المستخدم ، ويطلق المساحة التي يستخدمها الجدول ، لكن بنية الجدول مع الأعمدة والفهارس والقيود تظل كما هي. يقوم Truncate بحذف البيانات من جدول عن طريق إلغاء تخصيص صفحات البيانات المستخدمة لتخزين بيانات الجدول ، ويتم الاحتفاظ بإلغاء تخصيصات هذه الصفحات فقط في سجل المعاملات. لذلك يستخدم موارد سجل المعاملات وموارد النظام أقل مقارنة بأوامر SQL الأخرى ذات الصلة مثل حذف. لذلك تعد Truncate عبارة أسرع قليلاً من غيرها. فيما يلي بناء الجملة النموذجي لأمر Truncate.

اقتطاع الجدول

يجب أن نستبدل اسم الجدول ، الذي نريد منه إزالة البيانات بالكامل ، في بناء الجملة أعلاه.

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

ما هو الفرق بين Drop و Truncate؟

كلا الأمرين Drop و Truncate هما أمران DDL وكشوف التزام تلقائي حتى لا يمكن التراجع عن المعاملات التي تتم باستخدام هذه الأوامر.

يتمثل الاختلاف الأساسي بين Drop و Truncate في أن أمر Drop يزيل ، ليس فقط جميع البيانات الموجودة في جدول ، ولكنه يزيل أيضًا بنية الجدول بشكل دائم من قاعدة البيانات مع جميع المراجع ، بينما يزيل الأمر Truncate جميع الصفوف في جدول فقط ، ويحافظ على هيكل الجدول ومراجعه.

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

عندما يتم تطبيق هذه الأوامر ، يجب أن نكون حذرين في استخدامها. أيضًا ، يجب أن يكون لدينا فهم أفضل لطبيعة هذه الأوامر ، وكيف تعمل ، وأيضًا بعض التخطيط الدقيق قبل استخدامها من أجل الحيلولة دون فقدان الضروريات. أخيرًا ، يمكن استخدام كلا الأمرين لتنظيف قواعد البيانات بسرعة وسهولة ، مما يستهلك موارد أقل.