كيفية استخدام عوامل BETWEEN و IN في لغة الاستعلام البنيوية SQL


كيفية استخدام عوامل BETWEEN و IN في لغة الاستعلام البنيوية SQL

أهلاً بك أيها المبرمج! اليوم سنتعلم عن عاملين مهمين جداً في SQL يسهّلان عليك كتابة الاستعلامات: BETWEEN و IN. يلا بينا نشوفهم!

1. عامل BETWEEN

عامل BETWEEN يُستخدم لتحديد نطاق من القيم. يعني لو عايز تختار كل الصفوف اللي قيمة عمود معين فيها تقع بين قيمتين محددتين، BETWEEN هو الحل.

ملاحظة مهمة: BETWEEN شاملة للحدود (inclusive)، يعني القيمتين اللي بتحددهم هما كمان داخل النطاق.

الصيغة العامة:

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

مثال 1: اختيار المنتجات بين سعرين

لو عندك جدول Products وعايز تختار المنتجات اللي سعرها بين 100 و 200 (شامل):

SELECT ProductName, Price
FROM Products
WHERE Price BETWEEN 100 AND 200;

مثال 2: اختيار الطلبات بين تاريخين

عايز كل الطلبات اللي اتعملت في شهر يناير 2023:

SELECT OrderID, OrderDate, TotalAmount
FROM Orders
WHERE OrderDate BETWEEN '2023-01-01' AND '2023-01-31';

نصيحة: لما تستخدم BETWEEN مع التواريخ، تأكد إن صيغة التاريخ متوافقة مع نظام قاعدة البيانات بتاعتك.

استخدام NOT BETWEEN

لو عايز تختار كل الصفوف اللي ليست ضمن نطاق معين، بتستخدم NOT BETWEEN.

مثال 3: المنتجات التي سعرها ليس بين 100 و 200

SELECT ProductName, Price
FROM Products
WHERE Price NOT BETWEEN 100 AND 200;

2. عامل IN

عامل IN يُستخدم لتحديد قائمة من القيم. يعني لو عايز تختار كل الصفوف اللي قيمة عمود معين فيها بتطابق أي قيمة من قائمة محددة، IN هو اللي هينقذك.

الصيغة العامة:

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

مثال 4: اختيار العملاء من مدن معينة

لو عايز تختار كل العملاء اللي من القاهرة، الإسكندرية، أو الجيزة:

SELECT CustomerName, City
FROM Customers
WHERE City IN ('Cairo', 'Alexandria', 'Giza');

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

ممكن تستخدم IN مع نتيجة استعلام تاني (subquery). مثلاً، لو عايز تختار كل المنتجات اللي تم طلبها بواسطة عميل معين (رقمه 101):

SELECT ProductName
FROM Products
WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE OrderID IN (SELECT OrderID FROM Orders WHERE CustomerID = 101));

تنبيه: الاستعلامات الفرعية مع IN ممكن تكون بطيئة لو البيانات كتير. في بعض الحالات، ممكن JOIN يكون أسرع.

استخدام NOT IN

لو عايز تختار كل الصفوف اللي قيمتها ليست ضمن قائمة معينة، بتستخدم NOT IN.

مثال 6: العملاء الذين ليسوا من مدن معينة

SELECT CustomerName, City
FROM Customers
WHERE City NOT IN ('Cairo', 'Alexandria', 'Giza');

متى تستخدم أياً منهما؟

  • استخدم BETWEEN لما تكون عايز نطاق من القيم (أرقام، تواريخ، حروف أبجدية).
  • استخدم IN لما تكون عايز قائمة محددة من القيم المنفصلة (سواء كانت أرقام، نصوص، أو نتائج استعلام فرعي).

بكده تكون عرفت أساسيات استخدام BETWEEN و IN في SQL. جربهم بنفسك عشان تفهمهم أكتر! بالتوفيق!