الانضمام الخارجي لـ SQL

Alandmam Alkharjy L Sql



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

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







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



دعونا نستكشف المزيد عما تفعله هذه الصلات، وكيفية عملها، وكيف يمكننا استخدامها في قاعدة بيانات SQL.



متطلبات:

في هذا البرنامج التعليمي، سنعمل مع MySQL 8.0 ونستخدم نموذج قاعدة بيانات Sakila. ومع ذلك، لا تتردد في استخدام أي مجموعة بيانات أخرى تراها قابلة للتطبيق.





أنواع الصلات الخارجية

هناك ثلاثة أنواع رئيسية من الصلات الخارجية في SQL. تتضمن هذه الأنواع من الصلات الخارجية ما يلي:

  1. الصلات الخارجية اليسرى

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



  3. الصلات الخارجية الصحيحة

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

  5. الصلات الخارجية الكاملة

  6. وأخيرًا، لدينا الروابط الخارجية الكاملة. يجمع هذا النوع من الصلة بين الوصلتين الخارجيتين RIGHT وLEFT. ونتيجة لذلك، يقوم الربط باسترداد كافة الصفوف عند وجود تطابق في الجدول الأيسر أو الأيمن. إذا لم يكن هناك أي تطابق، فإن الصلة ترجع القيم الخالية للأعمدة من الجدول التي لا يوجد بها تطابق.

بناء جملة SQL OUTER JOIN

ما يلي يعبر عن بناء جملة SQL OUTER JOIN. ومع ذلك، فمن الجيد أن نأخذ في الاعتبار أن بناء الجملة قد يختلف قليلاً اعتمادًا على محرك قاعدة البيانات الهدف.

وفيما يلي الهيكل العام:

حدد الأعمدة
من الجدول 1
[يسار | حق | كامل] جدول الانضمام الخارجي2
على table1.column_name = table2.column_name;

يعد بناء جملة OUTER JOIN في SQL واضحًا بذاته.

أمثلة:

دعونا نلقي نظرة على بعض نماذج الاستخدام حول كيفية تطبيق الأنواع المختلفة من الصلات الخارجية في SQL.

كما ذكرنا، سوف نستخدم قاعدة بيانات Sakila النموذجية للتوضيح. في هذه الحالة، نستخدم جدولي 'العميل' و'الدفع'.

مثال 1: الانضمام الخارجي الأيسر

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

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

إذا لم يقم العميل بإجراء أي دفعة، فسوف تعرض عملية الانضمام القيم الخالية للأعمدة المرتبطة بالدفع.

مثال على النحو التالي:

يختار
ج.معرف_العميل،
ج.الاسم الأول،
ج.اسم_الأخير،
المبلغ,
تاريخ الدفع
من
العميل ج
الدفع بالانضمام الخارجي الأيسر ص
على
c.customer_id = p.customer_id;

في الاستعلام المحدد، نقوم بتضمين أعمدة 'customer_id' و'first_name' و'last_name' من جدول 'customer'. نقوم أيضًا بتضمين المبلغ و'تاريخ_الدفع' من جدول 'الدفع'.

نقوم بعد ذلك بإجراء صلة خارجية LEFT OUTER JOIN بين جدولي 'العميل' و'الدفع' استنادًا إلى 'customer_id'.

هؤلاء هم جميع العملاء (سواء تم الدفع أم لا) بالإضافة إلى تفاصيل الدفع الخاصة بهم (إن وجدت).

مثال على الإخراج هو كما يلي:

مثال 2: الانضمام الخارجي الصحيح

الآن، دعنا ننتقل إلى RIGHT OUTER JOIN. لنفترض أننا نرغب في تضمين جميع معلومات الدفع والعميل المرتبط به في هذه الحالة، إن وجد.

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

يختار
ج.معرف_العميل،
ج.الاسم الأول،
ج.اسم_الأخير،
المبلغ,
تاريخ الدفع
من
العميل ج
الدفع بالانضمام الخارجي الصحيح ص
على
c.customer_id = p.customer_id;

المجموعة الناتجة هي كما يلي:

مثال 3: الانضمام الخارجي الكامل

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

يختار
ج.معرف_العميل،
ج.الاسم الأول،
ج.اسم_الأخير،
المبلغ,
تاريخ الدفع
من
العميل ج
الدفع الخارجي الكامل ص
على
c.customer_id = p.customer_id;

من الجيد أن تضع في اعتبارك أن MySQL لا يدعم أصلاً الارتباط الخارجي الكامل. يجب عليك القيام ببعض سحر الجوجيتسو باستخدام LEFT JOIN وUNION وRIGHT JOIN. مزعج للغاية، قد نضيف.

خاتمة

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