✨ فهم عامل UNION ALL في SQL: دليل شامل للمبتدئين
عامل UNION ALL هو أحد الأدوات القوية في SQL التي تسمح لك بدمج نتائج استعلامين أو أكثر في مجموعة نتائج واحدة. على عكس UNION العادي، فإن UNION ALL يحتفظ بجميع السجلات بما في ذلك المتطابقة منها.
📊 ما هو الفرق بين UNION و UNION ALL؟
UNION العادي:
- يزيل السجلات المكررة تلقائياً
- يقوم بفرز النتائج (في بعض أنظمة قواعد البيانات)
- أبطأ قليلاً بسبب عملية إزالة التكرارات
UNION ALL:
- يحتفظ بجميع السجلات بما فيها المكررة
- لا يقوم بفرز النتائج
- أسرع في الأداء
🎯 متى نستخدم UNION ALL؟
نستخدم UNION ALL عندما:
- نريد جميع السجلات دون استثناء
- نعلم مسبقاً أنه لا توجد سجلات مكررة
- نريد أداء أسرع في الاستعلامات الكبيرة
- نحتاج الاحتفاظ بالبيانات كما هي دون تغيير
💻 بناء جملة UNION ALL الأساسي
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
شروط هامة:
- يجب أن يكون عدد الأعمدة متطابقاً في جميع الاستعلامات
- يجب أن تكون أنواع البيانات متوافقة بين الأعمدة المقابلة
- الأعمدة يجب أن تكون بنفس الترتيب
🔍 مثال عملي بسيط
لنفترض أن لدينا جدولين: employees_old و employees_new
-- جدول الموظفون القديمون
SELECT first_name, department FROM employees_old
UNION ALL
SELECT first_name, department FROM employees_new;
في هذا المثال، سنحصل على قائمة بجميع الموظفين من الجدولين مع الاحتفاظ بأي أسماء مكررة.
📝 مثال آخر مع بيانات حقيقية
-- استعلام لجمع المبيعات من فرعين مختلفين
SELECT 'Eastern Branch' AS location, product, quantity FROM sales_east
UNION ALL
SELECT 'Western Branch' AS location, product, quantity FROM sales_west;
هذا الاستعلام سيعطينا تقريراً شاملاً للمبيعات من كلا الفرعين مع تحديد مصدر كل سجل.
⚠️ أخطاء شائعة يجب تجنبها
- عدم تطابق عدد الأعمدة:
-- خطأ: عدد الأعمدة غير متطابق
SELECT first_name, department, salary FROM employees
UNION ALL
SELECT first_name, department FROM interns; -- ناقص عمود
- عدم توافق أنواع البيانات:
-- خطأ: أنواع البيانات غير متوافقة
SELECT first_name, hire_date FROM employees
UNION ALL
SELECT first_name, salary FROM managers; -- تاريخ ≠ رقم
🏆 أفضل الممارسات لاستخدام UNION ALL
- تأكد دائماً من تطابق عدد الأعمدة وأنواعها
- استخدم الأسماء المستعارة (Aliases) لجعل النتائج أكثر وضوحاً
- اختبر الاستعلامات الفرعية individually أولاً
- استخدم UNION ALL عندما تريد الأداء الأسرع
🎓 اختبر معلوماتك
السؤال 1 من 30% أكملت
ما هو الفرق الرئيسي بين UNION وUNION ALL في SQL؟
آخر تحديث: ٢٩ أبريل ٢٠٢٦
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال
جاري تحميل التعليقات...