TOP

SQL-الدرس الرابع. تصفية البيانات (WHERE)

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


1. تصفية بسيطة بواسطة عامل التشغيل WHERE.

لنختار من جدولنا، على سبيل المثال، السجلات التي تتعلق فقط بمنتج معين. للقيام بذلك، نحدد معلمة اختيار إضافية ستقوم بتصفية القيم حسب عمود المنتج.

مثال لاستعلام تحديد القيم النصية:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes'

كما ترون، فإن شرط التحديد محاط بعلامات اقتباس مفردة، وهو أمر إلزامي عند تصفية القيم النصية. علامات الاقتباس غير مطلوبة عند تصفية القيم الرقمية.

مثال لاستعلام تحديد القيم الرقمية:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 
ORDER BY Amount

في هذا المثال، قمنا بتحديد السجلات التي كانت إيرادات المبيعات فيها أكثر من 40000 دولار أمريكي، بالإضافة إلى ذلك، قمنا بفرز جميع السجلات بترتيب تصاعدي حسب حقل المبلغ.

يسرد الجدول أدناه العبارات الشرطية التي تدعمها SQL:

علامة العملية قيمة
= مساوي ل
<> لا يساوي
< أقل
<= اقل او يساوي
> أكثر
>= أكبر من أو يساوي
بين بين قيمتين
IS NULL لا يوجد سجل

2. التصفية حسب نطاق القيمة (BETWEEN)

يتم استخدام عامل التشغيل BETWEEN لتحديد البيانات التي تقع في نطاق معين. في الاستعلام التالي، سيتم تحديد كافة القيم التي تقع بين 1000 دولار و2000 دولار ضمناً في حقل المبلغ.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount BETWEEN 1000 AND 2000

يعتمد ترتيب الفرز على ترتيب الحقول في الاستعلام. أي أنه في حالتنا، سيتم فرز البيانات أولاً حسب عمود المبلغ، ثم حسب City.

3. اختيار السجلات الفارغة (IS NULL)

في SQL، يوجد عامل خاص لتحديد السجلات الفارغة (يسمى NULL). الإدخال الفارغ هو أي خلية في الجدول لا يتم إدخال أي حرف فيها. إذا تم إدخال 0 أو مسافة في الخلية، فيعتبر أن الحقل مملوء.

SELECT * 
FROM Sumproduct 
WHERE Amount IS NULL

في المثال أعلاه، قمنا عمدًا بإزالة قيمتين في حقل المبلغ لتوضيح عامل التشغيل NULL.

4. التصفية المتقدمة (AND، OR)

لا تقتصر لغة 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'

5. التصفية المتقدمة (IN عامل التشغيل)

Run SQLSELECT * 
FROM Sumproduct 
WHERE ID IN (4, 12, 58, 67)

يؤدي عامل التشغيل IN نفس وظيفة OR، ولكن له العديد من المزايا:

  • عند العمل باستخدام قوائم طويلة، تكون الجمل التي تحتوي على IN أسهل في القراءة؛
  • يتم استخدام عدد أقل من المشغلين، مما يؤدي إلى تسريع معالجة الطلب؛
  • الميزة الأكثر أهمية لـ IN هي أنه في بنائه يمكنك استخدام البناء الإضافي SELECT، والذي
  • відкриває великі можливості для створення складних підзапитів.

    6. التصفية المتقدمة (NOT عامل التشغيل)

    Run SQLSELECT * 
    FROM Sumproduct 
    WHERE NOT City IN ('Toronto', 'Montreal')
    

    تتيح لك الكلمة الأساسية NOT إزالة القيم غير الضرورية من العينة. كما أن ميزته أنه يتم وضعه قبل اسم العمود المعني بالتصفية وليس بعده.