شعار زيفيرنت

SQL المبسطة: صياغة استعلامات معيارية ومفهومة باستخدام CTEs - KDnuggets

التاريخ:

SQL المبسطة: صياغة استعلامات معيارية ومفهومة باستخدام CTEs
صورة المؤلف 
 

في عالم البيانات، لا تزال لغة SQL هي اللغة المشتركة للتفاعل مع قواعد البيانات. 

ولا تزال حتى اليوم واحدة من أكثر اللغات استخدامًا للتعامل مع البيانات ولا تزال تعتبر لغة ضرورية لأي محترف جيد في مجال البيانات. 

ومع ذلك، فإن أي شخص عمل مع استعلامات SQL المعقدة يعرف أنه يمكن أن يتحول بسرعة إلى وحوش غير عملية - يصعب قراءتها أو صيانتها أو إعادة استخدامها. 

هذا هو السبب في أنه لا يكفي اليوم معرفة لغة SQL، بل نحتاج إلى أن نكون جيدين في صياغة الاستعلامات. وهذا في الواقع نوع من الفن. 

هذا هو المكان الذي تلعب فيه تعبيرات الجدول الشائعة (CTEs) دورها، مما يحول فن كتابة الاستعلام إلى حرفة أكثر تنظيماً ودودًا.

لذلك دعونا نكتشف معًا كيفية ترميز الاستعلامات القابلة للقراءة والقابلة لإعادة الاستخدام.

إذا كنت تتساءل ما هو مرض CTE، فأنت في المقالة الصحيحة. 

تعبير الجدول العام (CTE) هو مجموعة نتائج مؤقتة يتم تعريفها ضمن نطاق تنفيذ عبارة SQL واحدة. 

 

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

لذا فهي أداة قوية لتقسيم الاستعلامات المعقدة إلى أجزاء أبسط.

لهذا السبب يجب أن تفكر في استخدام CTEs:

  • نمطية: يمكنك تقسيم المنطق المعقد إلى أجزاء قابلة للقراءة.
  • قراءة: فهو يجعل فهم تدفق استعلامات SQL أسهل.
  • إعادة الاستخدام: يمكن الرجوع إلى CTEs عدة مرات في استعلام واحد، مع تجنب التكرار.

يبدأ السحر بجملة "WTH"، التي تسبق استعلامك الرئيسي وتحدد جداول زمنية مختلفة (CTEs) بأسماء مستعارة.

لذلك، نحتاج دائمًا إلى بدء استعلامنا باستخدام الأمر "WITH" لبدء تحديد CTEs الخاصة. باستخدام CTEs، يمكننا تقسيم أي استعلام SQL معقد إلى: 

– جداول زمنية صغيرة تحسب المتغيرات ذات الصلة. 

– جدول نهائي يأخذ فقط تلك المتغيرات التي نريدها كمخرجات لنا.

وهذا هو بالضبط النهج المعياري الذي نريده في أي كود!

 

SQL المبسطة: صياغة استعلامات معيارية ومفهومة باستخدام CTEs
صورة المؤلف
 

لذا فإن استخدام CTEs في استعلاماتنا يسمح لنا بما يلي:

– تنفيذ الجدول الزمني مرة واحدة والرجوع إليه عدة مرات.

- تحسين سهولة القراءة وتبسيط المنطق المعقد.

- تعزيز إمكانية إعادة استخدام التعليمات البرمجية والتصميم المعياري.

من أجل فهم هذا بشكل أفضل، يمكننا أن نأخذ مثالا عمليا لقوائم Airbnb في برشلونة. 

تخيل أننا نريد تحليل أداء القوائم حسب الحي ومقارنتها بالأداء العام للمدينة. ستحتاج إلى جمع معلومات حول الأحياء والشقق الفردية والمضيفين والأسعار.

ولتوضيح ذلك سنستخدم داخل جدول مباراة برشلونة كالتالي: 

 

SQL المبسطة: صياغة استعلامات معيارية ومفهومة باستخدام CTEs
 

قد يقودك النهج الساذج إلى إنشاء استعلامات فرعية متداخلة والتي سرعان ما تصبح كابوسًا للصيانة مثل ما يلي:

كود المؤلف

بدلًا من ذلك، يمكننا استخدام CTEs لتقسيم استعلامنا إلى أقسام منطقية، يحدد كل منها جزءًا من اللغز.

  • بيانات الحي: إنشاء CTE لتلخيص البيانات حسب الحي.
  • معلومات الشقة والمضيف: حدد CTEs للحصول على تفاصيل حول الشقق والمضيفين.
  • المقاييس على مستوى المدينة: CTE آخر لجمع الإحصائيات على مستوى المدينة للمقارنة.
  • التجميع النهائي: قم بدمج CTEs في بيان SELECT النهائي لتقديم البيانات بشكل متماسك.

 

SQL المبسطة: صياغة استعلامات معيارية ومفهومة باستخدام CTEs
صورة المؤلف
 

وسننتهي بالاستعلام التالي:

كود المؤلف

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

في حالة ظهور متطلبات جديدة، يمكنك ضبط عناصر CTE أو إضافتها دون إجراء إصلاح شامل للاستعلام بأكمله.

بمجرد إنشاء CTEs الخاصة بك، يمكنك إعادة استخدامها لإجراء تحليل مقارن. على سبيل المثال، إذا كنت تريد مقارنة بيانات الحي بالمقاييس على مستوى المدينة، فيمكنك الرجوع إلى CTEs الخاصة بك في سلسلة من عمليات JOIN. 

وهذا لا يوفر الوقت فحسب، بل يحافظ أيضًا على كفاءة التعليمات البرمجية الخاصة بك، حيث لن تضطر إلى تكرار نفس الاستعلام مرتين!

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

فهو يبسط عملية تطوير الاستعلام ويسهل توصيل منطق استرجاع البيانات المعقد للآخرين.

تذكر، في المرة القادمة التي تجد فيها نفسك على وشك الشروع في كتابة وحش استعلام فرعي متداخل متعدد الارتباطات، فكر في تقسيمه باستخدام CTEs. 

نفسك المستقبلية - وأي شخص آخر قد يقرأ الكود الخاص بك - سوف يشكرك.
 
 

جوزيب فيرير هو مهندس تحليلات من برشلونة. تخرج في هندسة الفيزياء ويعمل حاليًا في مجال علوم البيانات المطبق على التنقل البشري. وهو منشئ محتوى بدوام جزئي يركز على علوم البيانات والتكنولوجيا. يمكنك الاتصال به على لينكدين:, تويتر or متوسط.

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة