كيفية استخدام عامل BETWEEN في MySQL (مع أمثلة للأعداد، التواريخ، والسلاسل)

1. المقدمة

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

2. الصياغة الأساسية لعامل BETWEEN

ما هو عامل BETWEEN؟

يُستخدم عامل BETWEEN في جملة WHERE للتحقق مما إذا كانت قيمة العمود تقع ضمن نطاق محدد. الصياغة الأساسية له هي كما يلي:

SELECT column_name
FROM table_name
WHERE column_name BETWEEN start_value AND end_value;

على سبيل المثال، إذا كان جدول يخزن أعمار الموظفين، يمكنك استخدام هذا العامل لاستخراج فقط أولئك الذين تقع أعمارهم ضمن نطاق معين.

الصيغة السلبية: NOT BETWEEN

إذا كنت بحاجة للبحث عن القيم خارج النطاق المحدد، يمكنك استخدام الصيغة السلبية NOT BETWEEN:

SELECT column_name
FROM table_name
WHERE column_name NOT BETWEEN start_value AND end_value;

3. تصفية النطاق الرقمي

استخدام BETWEEN مع الأعداد

عامل BETWEEN مفيد جدًا عند تصفية النطاقات الرقمية. على سبيل المثال، إذا أردت استخراج الموظفين الذين تتراوح رواتبهم بين 50,000 و 100,000، يمكنك كتابة الاستعلام كما يلي:

SELECT employee_id, name, salary
FROM employees
WHERE salary BETWEEN 50000 AND 100000;

بيانات عينة:

employee_id

name

الراتب

1

Sato

45000

٢

Suzuki

55000

3

تاكاهاشي

75000

4

Tanaka

120000

النتيجة:

employee_id

name

الراتب

2

Suzuki

55000

3

تاكاهاشي

75000

في هذا الاستعلام، يتم اختيار فقط الموظفين الذين تقع رواتبهم بين 50,000 و 100,000.

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

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

SELECT employee_id, name, salary
FROM employees
WHERE salary >= 50000 AND salary <= 100000;

استخدام BETWEEN يجعل الاستعلام أكثر اختصارًا وأسهل في القراءة. وهذا مفيد بشكل خاص عند التعامل مع عدة شروط نطاقية.

4. تصفية النطاق الزمني

استخدام BETWEEN مع التواريخ

يمكن أيضًا تطبيق عامل BETWEEN على النطاقات الزمنية. على سبيل المثال، لاسترجاع الطلبات التي تم وضعها بين 1 يناير 2024 و 31 ديسمبر 2024، يمكنك كتابة:

SELECT order_id, customer_id, order_date
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';

بيانات عينة:

order_id

معرف_العميل

order_date

1

101

2024-01-15

2

102

2024-05-30

3

103

2025-03-01

النتيجة:

order_id

customer_id

order_date

1

101

2024-01-15

2

102

2024-05-30

كما هو موضح أعلاه، يستخرج عامل BETWEEN البيانات ضمن النطاق الزمني المحدد.

التعامل مع بيانات الوقت

إذا كان عمود التاريخ يحتوي على قيم وقت، يجب أن تكون حذرًا. على سبيل المثال، إذا كان عمود order_date من النوع DATETIME، فإن استخدام BETWEEN سيشمل القيم من منتصف الليل (00:00:00) لتاريخ البداية وحتى منتصف الليل لليوم التالي بعد تاريخ النهاية. لضمان التقاط اليوم بالكامل، حدد مكوّن الوقت صراحةً:

WHERE order_date BETWEEN '2024-01-01 00:00:00' AND '2024-12-31 23:59:59';

5. تصفية النطاق النصي

استخدام BETWEEN مع السلاسل النصية

يمكن أيضًا تطبيق عامل BETWEEN على البيانات النصية. على سبيل المثال، إذا أردت البحث عن المنتجات التي تقع أسماؤها أبجديًا بين ‘A’ و ‘M’، سيكون الاستعلام كالتالي:

SELECT product_id, product_name
FROM products
WHERE product_name BETWEEN 'A' AND 'M';

بيانات عينة:

product_id

اسم المنتج

1

Apple

2

Banana

3

Mango

4

Orange

النتيجة:

product_id

product_name

1

Apple

2

Banana

3

Mango

اعتبارات الترتيب الأبجدي

عند تصفية السلاسل باستخدام BETWEEN، يجب مراعاة أن التقييم يتم بناءً على الترتيب الأبجدي. أيضًا، اعتمادًا على إعدادات التجميع (collation) في قاعدة البيانات، قد ينطبق حساسية الأحرف. على سبيل المثال، قد تُعامل 'a' و 'A' كقيم مختلفة. تأكد دائمًا من إعدادات التجميع عند العمل مع النطاقات النصية.

6. ملاحظات هامة حول عامل BETWEEN

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

كن حذرًا بشأن ترتيب قيم النطاق. إذا كانت القيمة الابتدائية أكبر من القيمة النهائية، قد يُعيد الاستعلام نتائج غير مقصودة:

SELECT * 
FROM table_name 
WHERE column_name BETWEEN 100 AND 50;  -- Unintended result

أيضًا، تذكر أن BETWEEN تشمل كلا الطرفين من النطاق، لذا اختر القيم بعناية.

الفهارس وأداء الاستعلام

عادةً ما يعمل عامل BETWEEN بنفس كفاءة عوامل المقارنة. ومع ذلك، لتحسين الأداء، يكون الفهرسة الصحيحة ضرورية. على سبيل المثال، إذا قمت بتطبيق فهرس على عمود تاريخ، فإن الاستعلامات التي تستخدم BETWEEN على ذلك العمود ستنفذ بشكل أكثر كفاءة.

7. استعلامات عملية وحالات الاستخدام

استخدام BETWEEN على أعمدة متعددة

يمكنك أيضًا دمج شروط BETWEEN على أعمدة متعددة. على سبيل المثال، إذا أردت تصفية المنتجات بناءً على كل من نطاق السعر ونطاق المخزون، يمكنك كتابة:

SELECT product_name, price, stock
FROM products
WHERE price BETWEEN 1000 AND 5000
  AND stock BETWEEN 50 AND 200;

هذا الاستعلام يسترجع المنتجات التي سعرها بين 1000 و 5000، ومستويات المخزون بين 50 و 200.

الاستخدام العملي لـ NOT BETWEEN

باستخدام الشكل السلبي NOT BETWEEN، يمكنك بسهولة استخراج البيانات خارج نطاق معين. على سبيل المثال، للعثور على الموظفين الذين رواتبهم أقل من 50,000 أو أكثر من 100,000، يمكنك كتابة:

SELECT employee_id, name, salary
FROM employees
WHERE salary NOT BETWEEN 50000 AND 100000;

النتيجة:

employee_id

name

الراتب

1

Sato

45000

4

Tanaka

120000

هذا الاستعلام يسترجع الموظفين الذين لا تقع رواتبهم بين 50,000 و 100,000. استخدام NOT BETWEEN يجعل من السهل تطبيق الشرط المعاكس.

8. أمثلة بصرية للاستعلامات

لجعل نتائج الاستعلام أكثر بديهية، يمكن أن تكون المخططات البصرية مفيدة. على سبيل المثال، يمكنك توضيح تأثير BETWEEN كما يلي:

Price Range: [----- 1000 ---- 5000 -----]
Product A Price: 3000 (Inside Range)
Product B Price: 6000 (Outside Range)

مثل هذه الرسوم التوضيحية تجعل من الأسهل فهم ما إذا كانت القيمة تقع ضمن النطاق المحدد في الاستعلام.

9. الخلاصة

عامل BETWEEN هو أداة قوية في MySQL للبحث القائم على النطاق. يمكن تطبيقه على البيانات الرقمية، والتواريخ، والسلاسل النصية، مما يتيح لك كتابة استعلامات مختصرة وفعّالة. ومع ذلك، من المهم فهم خصائصه—مثل شمولية قيم الحدود وأهمية الفهرسة الصحيحة—لتجنب النتائج غير المتوقعة. من خلال تطبيق هذه المعرفة، يمكنك تحسين أداء الاستعلام واستخراج البيانات التي تحتاجها بشكل أكثر فعالية.

10. المراجع

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