انتقل إلى محتوى الدرس
الدرس 15
دورة MySQL

تفريغ الجداول وحذفها عبر TRUNCATE و DROP في MySQLMySQL Truncating and Dropping Tables

تعلّم تفريغ الجداول وحذفها عبر TRUNCATE و DROP في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
5
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
8
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

عندما تحتاج إلى إفراغ جدول مرحلي أو جدول سجلات من كافة البيانات مع الاحتفاظ ببنيته الهندسية وأعمدته جاهزة للاستخدام مجدداً، نفّذ الأمر TRUNCATE TABLE table_name. يُصنَّف هذا الأمر ضمن لغة تعريف البيانات DDL، ويعيد الجدول إلى حالة الصفر الفارغة لحظياً مهما بلغت ملايين الصفوف المخزنة فيه.

مخطط مقارنة تفريغ الجداول TRUNCATE وحذفها عبر DROP في MySQL 8
SQL
-- Empty all rows instantly while keeping the table structure
TRUNCATE TABLE audit_events;
DESCRIBE audit_events;

بدلاً من المرور على كل صف لحذفه بشكل منفرد، ينفّذ محرك InnoDB أمر TRUNCATE TABLE عبر إزالة مساحة التخزين الحالية وإنشاء ملف .ibd جديد وفارغ تماماً بنفس تعريفات الأعمدة المحفوظة في قاموس البيانات. وتؤدي هذه الآلية إلى تحرير المساحة التخزينية وإعادتها لنظام التشغيل فوراً.

SQL
-- Verify table blueprint and reclaimed status after TRUNCATE
SHOW CREATE TABLE audit_events;
SHOW TABLE STATUS;

عندما يصبح الجدول بأكمله غير مستخدم وتريد إزالة بياناته وهيكله الهندسي نهائياً من قاعدة البيانات، نفّذ الأمر DROP TABLE table_name. يمسح هذا الأمر سجل الجدول من قاموس بيانات MySQL 8، ويحذف ملف .ibd الخاص به من القرص الصلب مع كافة تعريفات أعمدته.

SQL
-- Permanently remove an obsolete table and its schema blueprint
DROP TABLE products_old;
SHOW FULL TABLES;

تؤدي محاولة حذف جدول غير موجود إلى إطلاق الخطأ رقم 1051 وتوقف التنفيذ. إن إضافة شرط التحقق IF EXISTS في الصيغة DROP TABLE IF EXISTS table_name يحوّل عدم وجود الجدول إلى مجرد تنبيه غير قاتل يمكن استعراضه بأمر SHOW WARNINGS، مما يجعل سكربتات التنظيف تعمل بأمان في جميع البيئات.

SQL
-- Safely drop one or more tables without failing if missing
DROP TABLE IF EXISTS
  products_archive,
  legacy_Ghost_table;
SHOW WARNINGS;

رغم أن الجداول المؤقتة تُحذف تلقائياً عند إغلاق الاتصال، يُوصى هندسياً في العمليات الطويلة بحذفها صراحةً فور انتهاء الحاجة إليها لتحرير ذاكرة الخادم. احرص دائماً على تضمين الكلمة المفتاحية TEMPORARY في الأمر DROP TEMPORARY TABLE IF EXISTS temp_name لضمان عدم المساس بأي جدول دائم حتى لو حدث خطأ في التسمية.

SQL
-- Explicitly release session temporary tables with TEMPORARY guard
DROP TEMPORARY TABLE IF EXISTS
  session_price_buffer,
  temp_products_copy;
وجه المقارنةTRUNCATE TABLE tblDROP TABLE [IF EXISTS] tblDROP TEMPORARY TABLE IF EXISTS
هيكل الجدول والأعمدةيُحفظ سليماً في قاموس البياناتيُحذف نهائياً بالكامليُحذف من الجلسة الحالية
صفوف البيانات المخزنةتُفرّغ بالكامل (يعود إلى 0 صفوف)تُحذف بالكاملتُحذف من ذاكرة الجلسة
ملف التخزين الفيزيائي .ibdيُعاد إنشاؤه كملف جديد فارغيُزال نهائياً من القرص الصلبتُحرَّر مساحته من المساحة المؤقتة
يدعم شرط IF EXISTS؟لانعم (DROP TABLE IF EXISTS)نعم
هل يؤثر على الجداول الدائمة؟نعمنعملا (يقتصر على الجداول المؤقتة فقط)

ملخص الدرس: قارنّا في هذا الدرس بين أمرَي TRUNCATE TABLE وDROP TABLE في MySQL 8، وتعرّفنا على آلية إعادة إنشاء مساحة الجدول الفارغة مع الحفاظ على الأعمدة عند التفريغ، مقابل الإزالة النهائية للجدول عبر DROP TABLE IF EXISTS، وحماية الجداول الدائمة عبر DROP TEMPORARY TABLE.
الخطوة التالية والدرس القادم: بإتمام الوحدة الرابعة الخاصة بإدارة الجداول، نكون مستعدين للانتقال إلى الوحدة الخامسة (قيود الجداول في MySQL) بدءاً بالدرس السادس عشر حول قيود القيم الإلزامية والافتراضية.

خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

قارنّا في هذا الدرس بين أمرَي TRUNCATE TABLE وDROP TABLE في MySQL 8، وتعرّفنا على آلية إعادة إنشاء مساحة الجدول الفارغة مع الحفاظ على الأعمدة عند التفريغ، مقابل الإزالة النهائية للجدول عبر DROP TABLE IF EXISTS، وحماية الجداول الدائمة عبر DROP TEMPORARY TABLE. الخطوة التالية: بإتمام الوحدة الرابعة الخاصة بإدارة الجداول، نكون مستعدين للانتقال إلى الوحدة الخامسة (قيود الجداول في MySQL) بدءاً بالدرس السادس عشر حول قيود القيم الإلزامية والافتراضية.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Dropping Tables تفريغ الجداول
تعلّم تفريغ الجداول وحذفها عبر TRUNCATE و DROP في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
للمراجعة
02 Fast Reset With TRUNCATE TABLE التفريغ السريع عبر TRUNCATE TABLE
المفهوم الهندسي الأساسي لقسم التفريغ السريع عبر TRUNCATE TABLE في قواعد بيانات MySQL 8 الحديثة.
للمراجعة
03 How InnoDB Executes TRUNCATE آلية عمل TRUNCATE داخل InnoDB
الصياغة القياسية وقواعد التنفيذ العملي لقسم آلية عمل TRUNCATE داخل InnoDB.
للمراجعة
04 Permanent Removal With DROP الحذف النهائي عبر DROP TABLE
آلية التخزين وأفضل ممارسات محرك InnoDB الخاصة بقسم الحذف النهائي عبر DROP TABLE.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات2

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 2 مفهومةأول بطاقة، أول خطوة
01 TRUNCATE TRUNCATE
SQL DDL Fast Table Reset Operation
أمر هيكلي فائق السرعة يفرّغ الجدول عبر هدم وإعادة إنشاء مساحة التخزين الفيزيائية مع الإبقاء على تعريف الأعمدة.
للمراجعة
02 FS FS
Operating System Filesystem Space Reclamation
التحرير الفوري لكتل القرص الصلب وإعادتها لنظام التشغيل عند تفريغ أو حذف ملف .ibd المستقل في محرك InnoDB.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. افتح عميل MySQL 8 المحلي ونفّذ استعلام SQL المشروح في قسم التفريغ السريع عبر TRUNCATE TABLE للتحقق من النتائج.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم آلية عمل TRUNCATE داخل InnoDB وقارن مخرجات MySQL 8.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

4أسئلة 1أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي4 أسئلة تنتظرك
01

ما هو الفرق الهيكلي الأساسي بين أمر TRUNCATE TABLE وأمر DROP TABLE في MySQL 8؟

قارن مصير هيكل الجدول وتعريفات الأعمدة في كلا الأمرين.

02

كيف ينفّذ محرك التخزين InnoDB أمر TRUNCATE TABLE داخلياً؟

تذكّر سبب السرعة الفائقة لأمر TRUNCATE وتحريره الفوري لمساحة القرص.

03

أي عبارة تمنع أمر DROP TABLE من التوقف بالخطأ 1051 عندما يكون الجدول المستهدف غير موجود؟

اختر شرط الأمان القياسي عند حذف الجداول.

04

لماذا يُوصى دائماً بإضافة الكلمة المفتاحية TEMPORARY عند حذف جدول مؤقت (DROP TEMPORARY TABLE IF EXISTS)؟

تذكّر كيف تحمي كلمة TEMPORARY الجداول الدائمة من الحذف بالخطأ.