شعار زيفيرنت

فهم SQL JOINs: داخلي ، خارجي ، كامل ، يسار ، ويمين

التاريخ:

المُقدّمة

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

صلة داخلية

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

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

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

مثال

النظر في جدولين ، Customers و Orders، مع عمود مشترك customer_id. لاسترداد جميع العملاء الذين قدموا طلبات ، يمكننا استخدام صلة داخلية على النحو التالي:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer_id;

قد يعرض هذا الاستعلام بيانات مثل ما يلي:

CUSTOMER_ID الاسم رقم التعريف الخاص بالطلب
1 John Doe 1001
2 Jane Smith 1002
1 John Doe 1003
3 ماري جونسون 1004
2 Jane Smith 1005

انضمام اليسار

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

مثال

باستخدام نفس جداول "العملاء" و "الطلبات" ، يمكننا استرداد جميع العملاء وطلباتهم الخاصة ، إن وجدت ، بوصلة يسرى:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
LEFT JOIN Orders
ON Customers.customer_id = Orders.customer_id;
CUSTOMER_ID الاسم رقم التعريف الخاص بالطلب
1 John Doe 1001
2 Jane Smith 1002
1 John Doe 1003
3 ماري جونسون 1004
2 Jane Smith 1005
4 أليس ويليامز اغية

الحق في الانضمام

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

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

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

مثال

لتوضيح صلة صحيحة ، ضع في اعتبارك عكس الجداول من المثال السابق. لدينا طاولتين: Customers و Orders. نريد استرداد جميع الطلبات والعملاء المرتبطين بها ، بما في ذلك الطلبات التي ليس لها عملاء مرتبطون (على سبيل المثال ، طلبات الضيوف). يمكننا استخدام صلة صحيحة:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
RIGHT JOIN Orders
ON Customers.customer_id = Orders.customer_id;
CUSTOMER_ID الاسم رقم التعريف الخاص بالطلب
1 John Doe 1001
2 Jane Smith 1002
1 John Doe 1003
3 ماري جونسون 1004
2 Jane Smith 1005
اغية اغية 1006

في هذا المثال ، ستعرض النتيجة كافة السجلات من ملف Orders الجدول ، وإذا كان هناك تطابق في Customers الجدول ، سيعرض معلومات العميل المقابلة. إذا لم يكن هناك تطابق ، فإن customer_id و name الحقول من Customers سيكون الجدول NULL.

انضمام كامل / خارجي

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

مثال

لتوضيح صلة كاملة ، سننظر مرة أخرى في جدولين ، Customers و Orders. نريد استرداد جميع العملاء والأوامر المرتبطة بهم ، بما في ذلك العملاء الذين ليس لديهم أوامر وطلبات بدون عملاء. يمكن أن يكون هذا مفيدًا ، على سبيل المثال ، لتحديد العملاء الذين لم يقدموا أي طلبات أو طلبات غير مرتبطة بأي عميل. يمكننا تحقيق ذلك بضم كامل:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
FULL JOIN Orders
ON Customers.customer_id = Orders.customer_id;
CUSTOMER_ID الاسم رقم التعريف الخاص بالطلب
1 John Doe 1001
2 Jane Smith 1002
1 John Doe 1003
3 ماري جونسون 1004
2 Jane Smith 1005
اغية اغية 1006
4 أليس ويليامز اغية

تحسين أداء JOIN

لتحسين أداء SQL JOINs ، ضع في اعتبارك النصائح التالية:

  1. استخدم أنواع الصلة المناسبة بناءً على مجموعة النتائج المرغوبة. على سبيل المثال ، استخدم INNER JOINs عندما تحتاج فقط إلى سجلات متطابقة من كلا الجدولين ، واستخدم LEFT أو RIGHT JOINs عندما تريد تضمين سجلات غير متطابقة من أحد الجداول.

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

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

  4. ضع في اعتبارك استخدام الفهارس في الأعمدة المستخدمة في شرط الصلة ، حيث يمكن أن يؤدي ذلك إلى تحسين أداء الصلات بشكل ملحوظ.

تحقق من دليلنا العملي العملي لتعلم Git ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!

باتباع أفضل الممارسات هذه ، يمكنك التأكد من أن SQL JOINs الخاصة بك فعالة وإرجاع النتائج المرجوة في الوقت المناسب.

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

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

وفي الختام

دعنا نلخص سريعًا كيفية استخدام عمليات ضم SQL لدمج البيانات من جداول متعددة ، جنبًا إلى جنب مع حالات الاستخدام والمزايا والعيوب:

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

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

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

  • ينضم الكامل استرداد كافة السجلات من كلا الجدولين ، بغض النظر عما إذا كانت هناك سجلات متطابقة أم لا. إذا لم يكن هناك تطابق ، يتم إرجاع قيم NULL للبيانات المفقودة. يكون نوع الصلة هذا مفيدًا عندما تريد دمج البيانات من كلا الجدولين وتضمين كل السجلات ، حتى إذا لم يكن هناك تطابق بينهما.

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

بقعة_صورة

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

بقعة_صورة

الدردشة معنا

أهلاً! كيف يمكنني مساعدك؟