في معظم الحالات، من الضروري عدم تلقي جميع السجلات، ولكن فقط تلك التي تستوفي معايير معينة. ولهذا السبب يوجد عامل تشغيل خاص WHERE في SQL لتصفية العينات.
لنختار من جدولنا، على سبيل المثال، السجلات التي تتعلق فقط بمنتج معين. للقيام بذلك، نحدد معلمة اختيار إضافية ستقوم بتصفية القيم حسب عمود المنتج.
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes'
كما ترون، فإن شرط التحديد محاط بعلامات اقتباس مفردة، وهو أمر إلزامي عند تصفية القيم النصية. علامات الاقتباس غير مطلوبة عند تصفية القيم الرقمية.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000
ORDER BY Amount
في هذا المثال، قمنا بتحديد السجلات التي كانت إيرادات المبيعات فيها أكثر من 40000 دولار أمريكي، بالإضافة إلى ذلك، قمنا بفرز جميع السجلات بترتيب تصاعدي حسب حقل المبلغ.
يسرد الجدول أدناه العبارات الشرطية التي تدعمها SQL:
علامة العملية | قيمة |
---|---|
= | مساوي ل |
<> | لا يساوي |
< | أقل |
<= | اقل او يساوي |
> | أكثر |
>= | أكبر من أو يساوي |
بين | بين قيمتين |
IS NULL | لا يوجد سجل |
يتم استخدام عامل التشغيل BETWEEN لتحديد البيانات التي تقع في نطاق معين. في الاستعلام التالي، سيتم تحديد كافة القيم التي تقع بين 1000 دولار و2000 دولار ضمناً في حقل المبلغ.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount BETWEEN 1000 AND 2000
يعتمد ترتيب الفرز على ترتيب الحقول في الاستعلام. أي أنه في حالتنا، سيتم فرز البيانات أولاً حسب عمود المبلغ، ثم حسب City.
في SQL، يوجد عامل خاص لتحديد السجلات الفارغة (يسمى NULL). الإدخال الفارغ هو أي خلية في الجدول لا يتم إدخال أي حرف فيها. إذا تم إدخال 0 أو مسافة في الخلية، فيعتبر أن الحقل مملوء.
SELECT *
FROM Sumproduct
WHERE Amount IS NULL
في المثال أعلاه، قمنا عمدًا بإزالة قيمتين في حقل المبلغ لتوضيح عامل التشغيل NULL.
لا تقتصر لغة SQL على التصفية حسب شرط واحد، لأغراضك الخاصة، يمكنك استخدام إنشاءات معقدة للغاية لتحديد البيانات في وقت واحد من خلال العديد من المعايير. ولهذا السبب، تحتوي SQL على عوامل تشغيل إضافية تعمل على توسيع إمكانيات عامل التشغيل WHERE. عوامل التشغيل هذه هي: AND، OR، IN، NOT. سنقدم عدة أمثلة على عمل هؤلاء المشغلين.
Run SQLSELECT *
FROM Sumproduct
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT *
FROM Sumproduct
WHERE Month = 'April' OR Month = 'March'
لنقم بدمج عاملي التشغيل AND وOR. للقيام بذلك، سنقوم باختيار الدراجات (الدراجات) والزلاجات (الزلاجات)، والتي تم بيعها في مارس.
Run SQLSELECT *
FROM Sumproduct
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'
نرى أنه تم تضمين العديد من القيم في عينتنا (بالإضافة إلى شهر مارس، وكذلك شهر يناير، وفبراير، وأبريل). ماهو السبب؟ وحقيقة أن SQL لديها أولويات تنفيذ الأوامر. أي أن مشغل AND يتمتع بأولوية أعلى من مشغل OR، لذلك تم اختيار السجلات ذات الزلاجات المباعة في مارس أولاً، تليها جميع السجلات المتعلقة بالدراجات.
لذا، للحصول على العينة الصحيحة، نحتاج إلى تغيير أولويات تنفيذ الأمر. لهذا، سوف نستخدم الأقواس، كما هو الحال في الرياضيات. بعد ذلك، ستتم معالجة العوامل الموجودة بين قوسين أولاً، ثم الباقي.
Run SQLSELECT *
FROM Sumproduct
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'
Run SQLSELECT *
FROM Sumproduct
WHERE ID IN (4, 12, 58, 67)
يؤدي عامل التشغيل IN نفس وظيفة OR، ولكن له العديد من المزايا:
Run SQLSELECT *
FROM Sumproduct
WHERE NOT City IN ('Toronto', 'Montreal')
تتيح لك الكلمة الأساسية NOT إزالة القيم غير الضرورية من العينة. كما أن ميزته أنه يتم وضعه قبل اسم العمود المعني بالتصفية وليس بعده.