مقدمة عن 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.
تمارين للتطبيق
جرب كتابة الاستعلامات التالية في صفحة التجربة:
- اعرض الموظفين الذين أعمارهم أقل من 30
- اعرض الموظفين الذين رواتبهم بين 5000 و 7000
- اعرض الموظفين في قسم التقنية أو الإدارة
- اعرض الموظفين الذين أسماؤهم تبدأ بحرف 'س'
الخلاصة
WHEREلتصفية النتائج بشروطANDوORلدمج الشروطBETWEENللنطاقاتINللقوائمLIKEللبحث بالأنماطIS NULLللقيم الفارغة