عامل IN في SQL

عامل IN في SQL

عامل IN في SQL

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

مثال بسيط

إرجاع جميع العملاء من: ألمانيا، فرنسا، أو المملكة المتحدة:

SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');
    

ملاحظات حول الأداء

استخدام IN مناسب للقيم القليلة، أما إذا كانت القائمة كبيرة جدًا فقد يكون من الأفضل استخدام جدول مؤقت أو JOIN مع جدول آخر لتقليل استهلاك الموارد.

الصياغة (Syntax)

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);
    

قاعدة البيانات التجريبية

الجدول التالي يحتوي على عينة من جدول Customers:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

NOT IN

عند استخدام الكلمة NOT مع IN فإنها تُرجع جميع السجلات التي لا تنتمي لأي قيمة من القيم المحددة.

SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');
    

استخدام IN مع استعلام فرعي (Subquery)

يمكنك استخدام IN مع استعلام فرعي داخل جملة WHERE.
هذا يسمح لك بإرجاع السجلات من الاستعلام الأساسي والتي تظهر نتائجها داخل الاستعلام الفرعي.

SELECT * FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders);
    

NOT IN مع استعلام فرعي

المثال السابق أعاد 74 سجلًا، ما يعني أن هناك 17 عميلًا لم يقوموا بأي طلب.
يمكننا التأكد من ذلك باستخدام NOT IN.

SELECT * FROM Customers
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);
    

تمرين

ما الهدف الأساسي من عامل IN في SQL؟

  • لتحديد مجموعة من القيم داخل جملة WHERE ✅
  • لاختيار جميع الأعمدة من جدول
  • لإجراء بحث باستخدام الرموز (Wildcard)

هاشتاجات

#SQL #قواعد_البيانات #تعليم_SQL #SalemNet

تعليقات