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


يا هلا! اليوم راح نتعمق في وحدة من أهم الأجزاء بأي استعلام SQL: جملة WHERE. هي اللي بتخليك تتحكم بالضبط بالبيانات اللي بدك تشوفها. بدونها، استعلامك بيجيب كل شيء، وهذا مو دايماً اللي نبيه.

وش تسوي جملة WHERE؟

ببساطة، WHERE تستخدم لتصفية السجلات (الصفوف) بناءً على شروط معينة. يعني، تحدد المعايير اللي لازم السجل يطابقها عشان يظهر في نتيجة استعلامك.

الأساسيات: عوامل المقارنة (Comparison Operators)

هذي هي أبسط الطرق لتحديد الشروط:

  • = : يساوي
  • != أو <> : لا يساوي
  • > : أكبر من
  • < : أصغر من
  • >= : أكبر من أو يساوي
  • <= : أصغر من أو يساوي

مثال:

SELECT ProductName, Price
FROM Products
WHERE Price > 50;

هذا بيجيب لك كل المنتجات اللي سعرها فوق 50. سهل، صح؟

تجميع الشروط: العوامل المنطقية (Logical Operators)

مرات تحتاج تحدد أكثر من شرط. هنا تجي فايدة AND, OR, NOT.

  • AND: لازم كل الشروط تكون صحيحة.
  • OR: يكفي شرط واحد على الأقل يكون صحيح.
  • NOT: يعكس الشرط (إذا كان صحيح يصير خطأ، والعكس).

مثال على AND:

SELECT CustomerName, City
FROM Customers
WHERE City = 'Riyadh' AND Age > 30;

هنا بنجيب العملاء اللي من الرياض وعمرهم فوق 30.

مثال على OR:

SELECT ProductName, Category
FROM Products
WHERE Category = 'Electronics' OR Category = 'Books';

هذا بيجيب المنتجات اللي يا إما إلكترونيات أو كتب.

مثال على NOT:

SELECT OrderID, Status
FROM Orders
WHERE NOT Status = 'Shipped';

هذا بيجيب كل الطلبات اللي ما تم شحنها.

شروط متقدمة: العوامل الخاصة (Special Operators)

فيه عوامل خاصة تخلي الـ WHERE أقوى:

IN (للقيم المتعددة)

إذا بدك تشوف إذا كانت قيمة موجودة ضمن قائمة معينة من القيم.

SELECT EmployeeName, Department
FROM Employees
WHERE Department IN ('HR', 'IT', 'Finance');

هذا يكافئ استخدام OR عدة مرات، بس IN أنظف وأسهل.

BETWEEN (للنطاقات)

لتحديد إذا كانت القيمة تقع ضمن نطاق معين (شاملة للحد الأدنى والأقصى).

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

هذا بيجيب الطلبات اللي صارت في شهر يناير 2023.

LIKE (للبحث عن أنماط)

إذا بدك تبحث عن نصوص تتطابق مع نمط معين. تستخدم هنا رموز الوايلدكارد:

  • %: يمثل صفر أو أكثر من الأحرف (أي عدد من الأحرف).
  • _: يمثل حرف واحد فقط.

مثال:

SELECT CustomerName
FROM Customers
WHERE CustomerName LIKE 'A%'; -- أسماء العملاء اللي تبدأ بحرف A
SELECT ProductName
FROM Products
WHERE ProductName LIKE '%table%'; -- أسماء المنتجات اللي تحتوي على كلمة 'table' في أي مكان
SELECT ProductCode
FROM Products
WHERE ProductCode LIKE 'P___'; -- أكواد المنتجات اللي تبدأ بـ 'P' ويتبعها 3 أحرف فقط

IS NULL / IS NOT NULL (للقيم الفارغة)

للتحقق إذا كانت قيمة حقل معينة فارغة (NULL) أو لا (NOT NULL).

SELECT EmployeeName, Email
FROM Employees
WHERE Email IS NULL; -- الموظفين اللي ما عندهم بريد إلكتروني مسجل
SELECT ProductName, Description
FROM Products
WHERE Description IS NOT NULL; -- المنتجات اللي لها وصف موجود

ملاحظة مهمة عن الأقواس

تذكر دائمًا استخدام الأقواس () لتحديد أولوية تنفيذ الشروط، خاصة لما تجمع بين AND و OR. SQL بتنفذ AND قبل OR بشكل افتراضي، فالأقواس تساعدك تتحكم بالترتيب اللي تبيه.

مثال: WHERE (City = 'Riyadh' OR City = 'Jeddah') AND Age > 25;

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