شرح صفوف ومحتوى الفقرة
يلخّص الجدول التالي المراحل الثماني للتنفيذ المنطقي لاستعلام SELECT في MySQL 8 مرتبةً حسب تسلسل تنفيذها الفعلي داخل المحرك:
| ترتيب التنفيذ | جملة SQL | الوظيفة الأساسية للمرحلة | هل ترى أسماء SELECT المستعارة؟ |
|---|---|---|---|
1 | FROM | تحديد الجدول المصدر والأسماء المستعارة للجداول | لا |
2 | WHERE | تصفية الصفوف الفردية الخام قبل التجميع | لا (تُطلق خطأ 1054) |
3 | GROUP BY [WITH ROLLUP] | تقسيم المجموعات وتوليد المجاميع التراكمية | نعم (ميزة في MySQL) |
4 | HAVING | تصفية المجموعات بناءً على نتائج الدوال التجميعية | نعم (ميزة في MySQL) |
5 | SELECT | حساب التعابير والدوال وتعريف الأسماء المستعارة للأعمدة | تُعرَّف في هذه المرحلة |
6 | DISTINCT | إزالة الصفوف المتطابقة المكررة من النتيجة | نعم |
7 | ORDER BY | ترتيب الصفوف النهائية تصاعدياً أو تنازلياً | نعم (قياسي عالمياً) |
8 | LIMIT / OFFSET | اقتطاع شريحة الصفحة المطلوبة وإرسالها للعميل | تقبل أعداداً صحيحة |
ملخص الدرس: أتقنت في هذا الدرس توليد المجاميع الفرعية والعامة عبر WITH ROLLUP، وتمييز صفوف المجموع التراكمي بدالة GROUPING()، وفهم المسار المنطقي الكامل لتنفيذ استعلامات SQL من FROM حتى LIMIT.
الخطوة التالية والدرس القادم: ننتقل في الوحدة القادمة (الدوال المدمجة Built-In Functions) إلى معالجة النصوص والأرقام والتواريخ والتعابير الشرطية في MySQL 8.
-- Complete rollup report sorted with grand total last
SELECT dept_id,
GROUPING(dept_id) AS is_grand_total,
COUNT(*) AS staff_count,
SUM(salary) AS dept_payroll
FROM employees
WHERE is_active = 1
GROUP BY dept_id WITH ROLLUP
ORDER BY GROUPING(dept_id) ASC, dept_id ASC;
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنّا في هذا الدرس المجاميع الفرعية عبر ROLLUP والترتيب المنطقي لتنفيذ الاستعلام في MySQL 8 مع أمثلة عملية.
الخطوة التالية والدرس القادم
أكمل التدريبات والاختبار التفاعلي أدناه قبل الانتقال إلى الدرس التالي في مسار MySQL.