انتقل إلى محتوى الدرس
الدرس 25
دورة MySQL

تصفية السجلات بشرط WHERE ومعاملات المقارنة في MySQLMySQL WHERE Clause and Comparison Operators

تعلّم تصفية السجلات بشرط WHERE ومعاملات المقارنة في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
7
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع
تعرّف على آلية تقييم جملة WHERE لكل صف بعد قراءة الجدول لاسترجاع البيانات المطلوبة فقط.

تعمل جملة WHERE كبوابة تصفية دقيقة في استعلامات SELECT؛ إذ تمنع إرسال جميع صفوف الجدول عبر الشبكة وتقتصر على السجلات التي تحقق الشرط المحدد.

  • موقع التنفيذ المنطقي: يحدد محرك MySQL الجدول عبر FROM أولاً، ثم يختبر شرط WHERE على كل صف مرشح قبل استخراج أعمدة SELECT.
  • قاعدة القبول المنطقية: تمر فقط الصفوف التي يُعيد شرطها القيمة الصائبة TRUE الممثلة بالرقم 1، بينما تُستبعد الصفوف التي تُعيد 0 أو NULL.

يساعد وضع شروط دقيقة على الأعمدة المفهرسة محرك InnoDB على الوصول المباشر للسجلات دون مسح الجدول كاملاً.

آلية تصفية الصفوف ومعاملات المقارنة في MySQL 8

تُقيّم جملة WHERE كل صف بعد FROM وتُعيد فقط الصفوف التي يحقق شرطها القيمة المنطقية الصائبة 1
مخطط توضيحي لدرس تصفية السجلات بشرط WHERE ومعاملات المقارنة في MySQL
مخطط توضيحي لدرس تصفية السجلات بشرط WHERE ومعاملات المقارنة في MySQL
SQL
-- Filter active employees in department 10
SELECT emp_id, full_name, salary
FROM employees
WHERE dept_id = 10;
استخدم معامل التساوي = لمطابقة القيم الدقيقة ومعاملي عدم التساوي <> و != لاستبعاد القيم.

تُستخدم معاملات التساوي وعدم التساوي لاختبار تطابق قيمة العمود أو اختلافها عن قيمة ثابتة أو عمود آخر في الصف نفسه.

  • التساوي القياسي =: يختبر التطابق التام للأرقام أو النصوص المحاطة بعلامتي اقتباس مفردتين أو التواريخ.
  • عدم التساوي <> و !=: يؤدي المعاملان الوظيفة ذاتها في MySQL، ويُفضّل كتابة <> لكونه المعامل القياسي المعتمد في معيار ISO SQL العالمي.

انتبه إلى أن مقارنة أي قيمة مع NULL باستخدام = أو <> تُعيد دائماً NULL ولا تطابق أي صف.

SQL
-- Match paid invoices and exclude archived rows
SELECT invoice_id, client_name, total_usd
FROM invoices
WHERE payment_status = 'paid';

SELECT invoice_id, payment_status
FROM invoices
WHERE payment_status <> 'cancelled';
طبّق معاملات الأكبر والأصغر > و >= و < و <= لتصفية الأرقام والمبالغ والتواريخ.

تتيح معاملات الحدود النسبية تصفية القيم الرقمية والتواريخ والنصوص وفق ترتيبها التصاعدي أو التنازلي.

  • الحدود الصارمة > و <: تستبعد القيمة الحدية نفسها وتكتفي بما هو أكبر أو أصغر منها تماماً.
  • الحدود الشاملة >= و <=: تشمل القيمة الحدية المذكورة في الشرط ضمن النتائج المسترجعة.

احرص دائماً على كتابة التواريخ بالصيغة القياسية YYYY-MM-DD لضمان دقة المقارنة الزمنية في جميع إعدادات الخادم.

SQL
-- Products priced at or above 250 with low stock
SELECT product_id, title, unit_price, stock_qty
FROM products
WHERE unit_price >= 250.00;

SELECT order_id, created_on
FROM orders
WHERE created_on > '2026-01-01';
استخدم معامل السفينة الفضائية <=> في MySQL لمقارنة القيم بأمان حتى عند احتوائها على NULL.

تُعيد علامة التساوي العادية = القيمة NULL متى كان أحد طرفي المقارنة فارغاً. يوفر MySQL معامل التساوي الآمن <=> المعروف باسم معامل السفينة الفضائية ليُعيد دائماً 1 أو 0 دون غموض.

  • كلا الطرفين فارغ: التعبير NULL <=> NULL يُعيد 1.
  • أحد الطرفين فقط فارغ: التعبير 100 <=> NULL يُعيد 0 بدلاً من NULL.

يُعد هذا المعامل مثالياً في الاستعلامات المحضّرة عندما قد يحمل المتغير الممرر قيمة فعلية أو قيمة فارغة NULL.

SQL
-- Safe comparison when referral_code may be NULL
SELECT user_id, username, referral_code
FROM users
WHERE referral_code <=> NULL;

SELECT (NULL <=> NULL) AS both_null,
       (42 <=> NULL)   AS one_null;
افهم كيف تتحكم إعدادات المقارنة النصية Collation في حساسية الأحرف الكبيرة والصغيرة داخل WHERE.

يعتمد سلوك مقارنة النصوص داخل جملة WHERE في MySQL على نظام المقارنة النصية Collation المحدد للعمود.

  • الوضع الافتراضي غير الحساس لحالة الأحرف utf8mb4_0900_ai_ci: تعني اللاحقة _ci أن مقارنة 'Admin' = 'admin' تُعيد 1 لتجاهل فرق الأحرف الكبيرة والصغيرة.
  • المقارنة الحساسة لحالة الأحرف utf8mb4_0900_as_cs: يمكنك فرض المطابقة الحرفية الدقيقة بإضافة COLLATE utf8mb4_0900_as_cs عند فحص الرموز الحساسة.

تعتمد ترميزات 0900 الحديثة في MySQL 8 خاصية NO PAD التي تعتبر المسافات في نهاية النص جزءاً فعلياً من المقارنة.

SQL
-- Force case-sensitive match using MySQL 8 collation
SELECT user_id, username, role_code
FROM users
WHERE role_code COLLATE utf8mb4_0900_as_cs = 'Admin';
مرجع شامل يقارن جميع معاملات المقارنة في MySQL 8 وسلوكها مع NULL وحالات استخدامها.

يلخّص الجدول التالي جميع معاملات المقارنة الأساسية المستخدمة داخل جملة WHERE في MySQL 8 وسلوك كل منها عند مصادفة القيمة الفارغة NULL:

المعاملالوظيفةالنتيجة عند وجود NULLمثال تطبيقي
=يساوي تماماًيُعيد NULL (يُستبعد الصف)price = 99.00
<> أو !=لا يساوييُعيد NULL (يُستبعد الصف)status <> 'draft'
>أكبر تماماً منيُعيد NULL (يُستبعد الصف)qty > 0
>=أكبر من أو يساوييُعيد NULL (يُستبعد الصف)score >= 80
<أصغر تماماً منيُعيد NULL (يُستبعد الصف)stock < 5
<=أصغر من أو يساوييُعيد NULL (يُستبعد الصف)age <= 65
<=>التساوي الآمن مع NULLيُعيد 1 أو 0 دائماًcoupon <=> NULL

ملخص الدرس: تعلّمت في هذا الدرس آلية عمل جملة WHERE لتصفية الصفوف، واستخدام معاملات التساوي والحدود الرقمية والزمنية، وتوظيف معامل السفينة الفضائية <=> للمقارنة الآمنة مع NULL، وضبط حساسية الأحرف عبر COLLATE.
الخطوة التالية والدرس القادم: ننتقل في الدرس القادم إلى دمج عدة شروط معاً باستخدام المعاملات المنطقية AND و OR و NOT.

SQL
-- Audit query combining exact comparison and NULL-safe check
SELECT order_id, customer_id, discount_code, total_amount
FROM orders
WHERE discount_code <=> NULL;
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنّا في هذا الدرس تصفية السجلات بشرط WHERE ومعاملات المقارنة في MySQL في MySQL 8 مع أمثلة عملية.

الخطوة التالية والدرس القادم

أكمل التدريبات والاختبار التفاعلي أدناه قبل الانتقال إلى الدرس التالي في مسار MySQL.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 WHERE Clause جملة التصفية WHERE
جملة في لغة SQL تُنفّذ بعد FROM لتصفية سجلات الجدول والاحتفاظ فقط بالصفوف التي يحقق شرطها القيمة الصائبة 1.
للمراجعة
02 Spaceship Operator (<=>) معامل السفينة الفضائية (<=>)
معامل التساوي الآمن في MySQL الذي يُعيد 1 إذا كان الطرفان NULL ويُعيد 0 إذا كان أحدهما فقط NULL دون إرجاع UNKNOWN.
للمراجعة
03 Predicate الشرط المنطقي (Predicate)
تعبير مقارن داخل جملة WHERE يُقيَّم لكل صف ليُعيد إما صواب 1 أو خطأ 0 أو غير معروف NULL.
للمراجعة
04 Collation نظام المقارنة النصية (Collation)
مجموعة القواعد التي تحدد كيفية مقارنة النصوص وترتيبها في MySQL بما في ذلك حساسية الأحرف الكبيرة والصغيرة.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 SQL SQL
Structured Query Language
لغة الاستعلامات البنيوية للتعامل مع قواعد البيانات العلائقية
للمراجعة
02 CI CI
Case Insensitive
غير حساس لحالة الأحرف الكبيرة والصغيرة في المقارنات النصية
للمراجعة
03 CS CS
Case Sensitive
حساس لحالة الأحرف الكبيرة والصغيرة عند مقارنة السلاسل النصية
للمراجعة
04 ISO ISO
International Organization for Standardization
المنظمة الدولية للمعايير المعتمدة لصيغ SQL والتواريخ القياسية
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب استعلام SELECT على جدول orders يعرض العمودين order_id و total_amount للصفوف التي تكون فيها قيمة total_amount أكبر من أو تساوي 500.00.

  2. اكتب استعلام SELECT على جدول orders يعرض order_id و coupon_code باستخدام معامل السفينة الفضائية <=> لمطابقة القيمة NULL.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 1أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الجملة التي ينفذها محرك MySQL مباشرةً قبل تطبيق شرط WHERE؟

يحدد محرك MySQL الجدول المصدر عبر FROM أولاً ثم يختبر شرط WHERE على كل صف قبل استخراج أعمدة SELECT.

02

ما النتيجة التي يُعيدها التعبير (NULL = NULL) عند استخدام معامل التساوي العادي في MySQL؟

معامل التساوي العادي = يُعيد دائماً NULL عند وجود طرف فارغ، وبالتالي تستبعد جملة WHERE ذلك الصف.

03

ما النتيجة التي يُعيدها تعبير التساوي الآمن (NULL <=> NULL) في MySQL؟

يعامل المعامل <=> القيمتين الفارغتين NULL كمتطابقتين ويُعيد الرقم 1.

04

ما المعامل القياسي في معيار ISO SQL المكافئ تماماً للمعامل != في MySQL؟

كلا المعاملين <> و != يفحص عدم التساوي في MySQL، ويُعد <> الصيغة القياسية في ISO SQL.

05

لماذا يفشل استخدام الاسم المستعار المعرّف في SELECT داخل جملة WHERE؟

في ترتيب التنفيذ المنطقي للاستعلام، تُنفّذ WHERE قبل SELECT فلا تكون الأسماء المستعارة قد أُنشئت بعد.

06

إلى ماذا تشير اللاحقة _ci في اسم نظام المقارنة utf8mb4_0900_ai_ci؟

ترمز اللاحقة _ci إلى Case Insensitive أي عدم التفريق بين الأحرف الكبيرة والصغيرة أثناء المقارنة.

07

أي معامل يشمل القيمة الحدية 100 عند تصفية الصفوف التي يكون سعرها 100 فأكثر؟

المعامل >= يشمل القيمة المذكورة 100 بالإضافة إلى جميع القيم الأكبر منها.

08

ما الصيغة القياسية الموصى بها لكتابة التاريخ داخل شرط WHERE في MySQL؟

يعتمد محرك MySQL الصيغة القياسية 'YYYY-MM-DD' لضمان تفسير التواريخ ومقارنتها بدقة تامة.