الدرس 5

تصفية البيانات WHERE

الوحدة الثانية: الاستعلامات الأساسية مدة القراءة: 20 دقيقة

مقدمة عن WHERE

أمر WHERE يُستخدم لتصفية النتائج وإرجاع الصفوف التي تطابق شرطاً معيناً فقط. بدونه، ستحصل على جميع الصفوف في الجدول.

الصيغة الأساسية

SELECT column1, column2
FROM table_name
WHERE condition;

عوامل المقارنة

يمكنك استخدام العوامل التالية في الشروط:

-- عوامل المقارنة:
=      يساوي
<>     لا يساوي (أو !=)
>      أكبر من
<      أصغر من
>=     أكبر من أو يساوي
<=     أصغر من أو يساوي

أمثلة عملية

1. المقارنة بقيمة رقمية

-- الموظفون الذين راتبهم أكبر من 5000
SELECT name, salary
FROM employees
WHERE salary > 5000;

2. المقارنة بنص

-- الموظفون في قسم التقنية
SELECT name, department
FROM employees
WHERE department = 'التقنية';

-- ملاحظة: النصوص تكون بين علامتي اقتباس

3. استخدام AND (و)

لدمج أكثر من شرط حيث يجب تحقق جميعها:

-- الموظفون في التقنية وراتبهم أكبر من 5000
SELECT name, salary, department
FROM employees
WHERE department = 'التقنية'
  AND salary > 5000;

4. استخدام OR (أو)

لدمج شروط حيث يكفي تحقق أحدها:

-- الموظفون في التقنية أو المبيعات
SELECT name, department
FROM employees
WHERE department = 'التقنية'
   OR department = 'المبيعات';

5. استخدام NOT (ليس)

-- جميع الموظفين ما عدا قسم الإدارة
SELECT name, department
FROM employees
WHERE NOT department = 'الإدارة';

-- أو:
WHERE department <> 'الإدارة';

6. دمج AND و OR

-- الموظفون في التقنية براتب عالي
-- أو أي موظف في الإدارة
SELECT name, salary, department
FROM employees
WHERE (department = 'التقنية' AND salary > 5000)
   OR department = 'الإدارة';
تنبيه

استخدم الأقواس () عند دمج AND و OR لتحديد أولوية الشروط وتجنب النتائج غير المتوقعة.

عوامل خاصة

BETWEEN - بين قيمتين

-- الموظفون الذين رواتبهم بين 4000 و 6000
SELECT name, salary
FROM employees
WHERE salary BETWEEN 4000 AND 6000;

-- مكافئ لـ:
WHERE salary >= 4000 AND salary <= 6000;

IN - ضمن قائمة

-- الموظفون في أقسام محددة
SELECT name, department
FROM employees
WHERE department IN ('التقنية', 'المبيعات', 'الإدارة');

-- مكافئ لـ:
WHERE department = 'التقنية'
   OR department = 'المبيعات'
   OR department = 'الإدارة';

LIKE - البحث بالنمط

-- % تعني أي عدد من الحروف
-- _ تعني حرف واحد فقط

-- الأسماء التي تبدأ بـ 'أ'
SELECT name FROM employees
WHERE name LIKE 'أ%';

-- الأسماء التي تنتهي بـ 'ة'
SELECT name FROM employees
WHERE name LIKE '%ة';

-- الأسماء التي تحتوي على 'حم'
SELECT name FROM employees
WHERE name LIKE '%حم%';

-- الأسماء من 4 أحرف
SELECT name FROM employees
WHERE name LIKE '____';

IS NULL - القيم الفارغة

-- الموظفون بدون قسم محدد
SELECT name FROM employees
WHERE department IS NULL;

-- الموظفون الذين لديهم قسم
SELECT name FROM employees
WHERE department IS NOT NULL;
ملاحظة مهمة

لا تستخدم = للمقارنة مع NULL. استخدم دائماً IS NULL أو IS NOT NULL.

تمارين للتطبيق

جرب كتابة الاستعلامات التالية في صفحة التجربة:

  1. اعرض الموظفين الذين أعمارهم أقل من 30
  2. اعرض الموظفين الذين رواتبهم بين 5000 و 7000
  3. اعرض الموظفين في قسم التقنية أو الإدارة
  4. اعرض الموظفين الذين أسماؤهم تبدأ بحرف 'س'

الخلاصة

  • WHERE لتصفية النتائج بشروط
  • AND و OR لدمج الشروط
  • BETWEEN للنطاقات
  • IN للقوائم
  • LIKE للبحث بالأنماط
  • IS NULL للقيم الفارغة