دليل خطوة بخطوة لقراءة استعلامات SQL وفهمها - KDnuggets

دليل خطوة بخطوة لقراءة استعلامات SQL وفهمها – KDnuggets

عقدة المصدر: 3091384

دليل خطوة بخطوة لقراءة استعلامات SQL وفهمها
الصورة عن طريق Freepik
 

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

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

ستستعرض هذه المقالة عملية خطوة بخطوة لقراءة استعلامات SQL وفهمها. كيف نفعل ذلك؟ دعونا ندخل في ذلك.

أول شيء يتعين علينا القيام به عند مواجهة استعلام SQL هو فهم الهدف العام لاستعلامات SQL. لا يعني القصد العام أننا نعرف تمامًا بنية الاستعلام؛ يتعلق الأمر أكثر بالتدفقات الإجمالية.

يجب أن نفهم استعلامات SQL القياسية لفهم استعلام SQL العام. تبدأ معظم استعلامات SQL بـ اختر جملة ومتابعة مع من عند بند. واستمرارًا من هناك، غالبًا ما تتم متابعة الاستعلامات الانضمام, WHERE, GROUP BY, ترتيب حسب، و وجود شروط.

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

  1. اختر: ما هي الأعمدة التي يجب أخذها من الجدول
  2. من عند: من أي جدول جاءت البيانات
  3. الانضمام: دمج الجداول مع المعرف المحدد
  4. WHERE: تصفية البيانات على أساس الحالة
  5. GROUP BY: تنظيم البيانات بناءً على قيمة العمود والسماح بأداء وظيفة التجميع.
  6. ترتيب حسب: قم بترتيب ترتيب نتائج البيانات بناءً على العمود المحدد
  7. وجود: شرط التصفية لوظيفة التجميع التي لا يمكن تحديدها WHERE

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

SELECT 
  customers.name, 
  purchases.product, 
  SUM(price) as total_price 
FROM 
  purchases 
  JOIN customers ON purchases.cust_id = customers.id 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  customers.name, 
  purchases.product 
HAVING 
  total_price > 10000 
ORDER BY 
  total_price DESC;

 

عندما تنظر إلى الاستعلام أعلاه، حاول التعرف على الجمل القياسية. سيزودك هذا البند بفهم البيانات التي تم تحديدها (اختر)، من أين هو (من عند و الانضمام) والشرط (WHERE, GROUP BY, ترتيب حسبو وجود). 

على سبيل المثال، قراءة الاستعلام أعلاه ستوفر لك فهمًا لما يلي:

  1. نحاول الحصول على ثلاثة أنواع مختلفة من البيانات: الاسم من جدول يسمى العملاء، والمنتج من جدول يسمى المشتريات، وتجميع أعمدة الأسعار التي لا تحدد مصدر الجدول وبالاسم المستعار Total_price (معلومات من البند اختر). 
  1. ستأتي البيانات الإجمالية من جداول المشتريات والعملاء التي ترتبط معًا باستخدام عمود cust_id من المشتريات وعمود المعرف من جدول العميل (معلومات من الجملة من) و الانضمام). 
  1. سنختار فقط البيانات ذات قيمة عمود الفئة في جدول المشتريات باسم "المطبخ" (المعلومات من البند WHERE), 
  1. مجموعة لوظيفة التجميع بالاسم وعمود المنتج الذي يأتي من الجدول المعني (المعلومات من البند GROUP BY), 
  1. تمت تصفيته أيضًا من مجموع نتيجة دالة التجميع حيث يكون Total_price أكثر من 10000 (معلومات من البند وجود)، و 
  1. قم بترتيب البيانات تنازليًا وفقًا للسعر الإجمالي (المعلومات من البند ترتيب حسب).

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

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

دعونا نستخدم رمزًا أكثر تعقيدًا مثل الكود أدناه.

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
) 
SELECT 
  c.name, 
  pd.product, 
  pd.total_product_price, 
  cs.total_spending 
FROM 
  (
    SELECT 
      purchases.cust_id, 
      purchases.product, 
      SUM(purchases.price) as total_product_price 
    FROM 
      purchases 
    WHERE 
      purchases.category = 'kitchen' 
    GROUP BY 
      purchases.cust_id, 
      purchases.product 
    HAVING 
      SUM(purchases.price) > 10000
  ) AS pd 
  JOIN customers c ON pd.cust_id = c.id 
  JOIN customerspending cs ON c.id = cs.id 
ORDER BY 
  pd.total_product_price DESC;

 

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

لدينا فكرة عن النتيجة يجب أن تكون من الاستعلامات. الجزء التالي هو معرفة ما هي شروط المباراة النهائية اختر نكون. شرط الشروط ومنها WHERE, GROUP BY, ترتيب حسبو وجود كانوا هم الذين يتحكمون في نتيجة البيانات الإجمالية. 

حاول قراءة وفهم شروط استعلامنا، وسوف نفهم بشكل أفضل النتيجة النهائية لاستعلامنا. على سبيل المثال، في استعلام SQL السابق، الشرط النهائي هو فقط ترتيب حسب. وهذا يعني أنه سيتم ترتيب النتيجة النهائية حسب سعر المنتج الإجمالي بترتيب تنازلي. 

إن معرفة الشروط النهائية ستساعدك على فهم جزء كبير من الاستعلام والهدف العام للاستعلام.

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

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

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

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

SELECT 
  purchases.cust_id, 
  purchases.product, 
  SUM(purchases.price) as total_product_price 
FROM 
  purchases 
WHERE 
  purchases.category = 'kitchen' 
GROUP BY 
  purchases.cust_id, 
  purchases.product 
HAVING 
  SUM(purchases.price) > 10000

 

ثم ننتقل إلى الكود الأبعد وهو هذا:

WITH customerspending AS (
  SELECT 
    customers.id, 
    SUM(purchases.price) as total_spending 
  FROM 
    purchases 
    JOIN customers ON purchases.cust_id = customers.id 
  GROUP BY 
    customers.id
)

 

يمكننا تتبع عملية تفكير المؤلف بوضوح عندما نقوم بتقسيم كل استعلام فرعي من الأقرب إلى النتيجة إلى الأبعد. 

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

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

  1. فهم البنية العامة لاستعلام SQL
  2. فهم الاختيار النهائي
  3. فهم بند الشروط النهائية
  4. فهم الانضمام النهائي
  5. عكس ترتيب القراءة والتكرار

 
 

كورنليوس يودا ويجايا هو مدير مساعد لعلوم البيانات وكاتب بيانات. أثناء عمله بدوام كامل في Allianz Indonesia ، يحب مشاركة نصائح حول Python و Data عبر وسائل التواصل الاجتماعي وكتابة الوسائط.

الطابع الزمني:

اكثر من KD nuggets