عامل 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
تعليقات
إرسال تعليق