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

Readable Queries with WITH CTE تبسيط الاستعلامات بتعبير WITH

تعلّم التعبيرات الجدولية الشائعة WITH والاستعلامات العودية في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
8 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

قدّم إصدار MySQL 8.0 ميزة التعبيرات الجدولية الشائعة (CTEs)، وهي مجموعات نتائج مؤقتة مسماة تُعرَّف في مطلع الاستعلام باستخدام الصيغة WITH cte_name AS (SELECT ...):

  • القراءة المتسلسلة من الأعلى للأسفل: بدلاً من دفن الجداول المشتقة داخل أقواس متداخلة معقدة في جملة FROM، تتيح لك تعبيرات WITH تنظيم منطق الاستعلام خطوة بخطوة من الأعلى إلى الأسفل.
  • نطاق عمر مؤقت للاستعلام فقط: يعيش التعبير الجدولي المؤقت طوال فترة تنفيذ التعليمة الوحيدة التي تليه مباشرةً (SELECT أو INSERT أو UPDATE أو DELETE) ثم يزول تلقائياً.
مخطط التعبيرات الجدولية الشائعة WITH والاستعلامات العودية WITH RECURSIVE في MySQL 8
SQL
-- Define a named CTE for customer paid totals, then join with users
WITH customer_paid_totals AS (
  SELECT user_id, COUNT(*) AS orders_cnt,
         SUM(total_amount) AS total_spent
  FROM orders WHERE status = 'paid'
  GROUP BY user_id
)
SELECT u.full_name, cpt.orders_cnt, cpt.total_spent
FROM customer_paid_totals AS cpt
INNER JOIN users AS u ON cpt.user_id = u.user_id
WHERE cpt.total_spent >= 500.00;