১. ভূমিকা
MySQL ডাটাবেসে কুয়েরি কার্যকরভাবে চালানোর জন্য গুরুত্বপূর্ণ উপাদানগুলোর একটি হল BETWEEN অপারেটর। নির্দিষ্ট রেঞ্জের মধ্যে ডেটা পড়ে কিনা তা যাচাই করার সময় এই অপারেটরটি অত্যন্ত উপযোগী। এটি সংখ্যা, তারিখ এবং স্ট্রিংয়ের রেঞ্জ নির্ধারণে ব্যবহার করা হয়, যা ডাটাবেস অনুসন্ধান ও ফিল্টারিংয়ে দক্ষ ডেটা আহরণকে সম্ভব করে। এই প্রবন্ধে আমরা MySQL BETWEEN অপারেটর কীভাবে ব্যবহার করতে হয়, ব্যবহারিক উদাহরণ এবং গুরুত্বপূর্ণ বিষয়গুলো বিশদভাবে ব্যাখ্যা করব।
২. 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;
৩. সংখ্যামূলক রেঞ্জ নির্ধারণ
সংখ্যামূলক রেঞ্জের জন্য BETWEEN ব্যবহার
সংখ্যামূলক রেঞ্জ নির্ধারণে BETWEEN অপারেটরটি খুবই সুবিধাজনক। উদাহরণস্বরূপ, যদি আপনি এমন ডেটা বের করতে চান যেখানে কর্মচারীর বেতন ৫০,০০০ থেকে ১,০০,০০০ এর মধ্যে, তবে কুয়েরিটি নিম্নরূপ লিখুন:
SELECT employee_id, name, salary
FROM employees
WHERE salary BETWEEN 50000 AND 100000;
নমুনা ডেটা:
| employee_id | name | salary |
|---|---|---|
| 1 | Sato | 45000 |
| 2 | Suzuki | 55000 |
| 3 | Takahashi | 75000 |
| 4 | Tanaka | 120000 |
নির্বাহ ফলাফল:
| employee_id | name | salary |
|---|---|---|
| 2 | Suzuki | 55000 |
| 3 | Takahashi | 75000 |
উপরের কুয়েরিতে শুধুমাত্র সেই কর্মচারীরা নির্বাচিত হয় যাদের বেতন ৫০,০০০ থেকে ১,০০,০০০ এর মধ্যে পড়ে।
তুলনা অপারেটর থেকে পার্থক্য
একই শর্তটি যদি তুলনা অপারেটর ব্যবহার করে প্রকাশ করা হয়, তবে তা এই রকম দেখাবে:
SELECT employee_id, name, salary
FROM employees
WHERE salary >= 50000 AND salary <= 100000;
BETWEEN ব্যবহার করলে কুয়েরি আরও সংক্ষিপ্ত হয় এবং পাঠযোগ্যতা বাড়ে। বিশেষ করে যখন একাধিক রেঞ্জ শর্ত জড়িত থাকে, তখন BETWEEN কুয়েরিটিকে সহজে বোঝা যায়।

৪. তারিখ রেঞ্জ নির্ধারণ
তারিখ ডেটার সাথে BETWEEN ব্যবহার
BETWEEN ব্যবহার করে তারিখ রেঞ্জও নির্ধারণ করা যায়। উদাহরণস্বরূপ, যদি আপনি orders টেবিল থেকে ১ জানুয়ারি ২০২৪ থেকে ৩১ ডিসেম্বর ২০২৪ পর্যন্ত অর্ডারগুলো বের করতে চান, তবে কুয়েরিটি নিম্নরূপ লিখুন:
SELECT order_id, customer_id, order_date
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
নমুনা ডেটা:
| order_id | customer_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 দিয়ে রেঞ্জ নির্ধারণ করলে শুরু তারিখের মধ্যরাত থেকে শেষ তারিখের ২৩:৫৯:৫৯ পর্যন্ত রেকর্ডগুলো অন্তর্ভুক্ত হবে।
WHERE order_date BETWEEN '2024-01-01 00:00:00' AND '2024-12-31 23:59:59';
৫. স্ট্রিং রেঞ্জ নির্ধারণ
স্ট্রিং ডেটার সাথে BETWEEN ব্যবহার
BETWEEN অপারেটরটি স্ট্রিং ডেটার ক্ষেত্রেও প্রয়োগ করা যায়। উদাহরণস্বরূপ, যদি আপনি এমন পণ্যগুলো অনুসন্ধান করতে চান যাদের নাম ‘A’ থেকে ‘M’ এর মধ্যে পড়ে, তবে কুয়েরিটি নিম্নরূপ লিখুন:
SELECT product_id, product_name
FROM products
WHERE product_name BETWEEN 'A' AND 'M';
নমুনা ডেটা:
| product_id | product_name |
|---|---|
| 1 | Apple |
| 2 | Banana |
| 3 | Mango |
| 4 | Orange |
নির্বাহ ফলাফল:
| product_id | product_name |
|---|---|
| 1 | Apple |
| 2 | Banana |
| 3 | Mango |
বর্ণানুক্রমিক ক্রমের বিবেচনা
স্ট্রিং রেঞ্জ নির্ধারণের সময় ধরে নেওয়া হয় যে স্ট্রিংগুলো বর্ণানুক্রমিকভাবে সাজানো। ডাটাবেসের কলেশন সেটিংসের উপর নির্ভর করে বড় ও ছোট অক্ষরের পার্থক্য করা হতে পারে, তাই সতর্কতা প্রয়োজন। উদাহরণস্বরূপ, 'a' এবং 'A' ভিন্ন মান হিসেবে বিবেচিত হতে পারে।
৬. BETWEEN ব্যবহার করার সময় গুরুত্বপূর্ণ বিবেচনা
রেঞ্জের ক্রম গুরুত্বপূর্ণ
.যখন BETWEEN অপারেটর ব্যবহার করা হয়, শুরু এবং শেষ মানের ক্রমের প্রতি সতর্ক থাকুন। যদি শুরু মান শেষ মানের চেয়ে বড় হয়, তবে কুয়েরি অনিচ্ছাকৃত ফলাফল দিতে পারে।
SELECT * FROM table_name WHERE column_name BETWEEN 100 AND 50; -- unintended result
এছাড়াও, যেহেতু BETWEEN উভয় সীমানা মানকে অন্তর্ভুক্ত করে, তাই শুরু এবং শেষ মানগুলো সতর্কতার সাথে নির্বাচন করা গুরুত্বপূর্ণ।
সূচক ব্যবহার এবং দক্ষতা
BETWEEN অপারেটরের পারফরম্যান্স সাধারণত স্ট্যান্ডার্ড তুলনা অপারেটরের সমতুল্য হয়। তবে, কুয়েরি পারফরম্যান্স অপ্টিমাইজ করতে সঠিক সূচিকরণ অপরিহার্য। যখন সূচকগুলো সঠিকভাবে কনফিগার করা হয়, BETWEEN অপারেটর ব্যবহার করে কুয়েরি এক্সিকিউশন গতি উন্নত হয়। উদাহরণস্বরূপ, একটি তারিখ কলামে সূচক সেট করা হলে তারিখ রেঞ্জ কুয়েরিগুলো আরও কার্যকরভাবে চালানো যায়।
৭. ব্যবহারিক কুয়েরি এবং উন্নত উদাহরণ
একাধিক কলামে BETWEEN ব্যবহার করা
BETWEEN অপারেটর একাধিক কলামের সমন্বয়ে ব্যবহার করা যায়। উদাহরণস্বরূপ, পণ্যের দাম এবং স্টক পরিমাণ উভয়ই নির্দিষ্ট করে রেঞ্জ সার্চ করার সময় নিম্নলিখিত কুয়েরি ব্যবহার করা যেতে পারে:
SELECT product_name, price, stock
FROM products
WHERE price BETWEEN 1000 AND 5000
AND stock BETWEEN 50 AND 200;
এই কুয়েরি ১,০০০ থেকে ৫,০০০ মূল্যের পণ্য এবং ৫০ থেকে ২০০ স্টক পরিমাণের পণ্যগুলো অনুসন্ধান করে।
NOT BETWEEN উন্নত উদাহরণ
নেতিবাচক রূপ NOT BETWEEN ব্যবহার করে আপনি নির্দিষ্ট রেঞ্জের বাইরে থাকা ডেটা বের করতে পারেন। উদাহরণস্বরূপ, ৫০,০০০ এর নিচে বা ১,০০,০০০ এর উপরে বেতনযুক্ত কর্মচারীদের অনুসন্ধান করতে নিম্নলিখিতভাবে কুয়েরি লিখুন:
SELECT employee_id, name, salary
FROM employees
WHERE salary NOT BETWEEN 50000 AND 100000;
এক্সিকিউশন ফলাফল:
| employee_id | name | salary |
|---|---|---|
| 1 | Sato | 45000 |
| 4 | Tanaka | 120000 |
এই কুয়েরি ৫০,০০০ থেকে ১,০০,০০০ রেঞ্জের মধ্যে না থাকা বেতনযুক্ত কর্মচারীদের পুনরুদ্ধার করে। NOT BETWEEN ব্যবহার করে বিপরীত শর্তের ভিত্তিতে ডেটা বের করা সহজ হয়।
৮. ভিজ্যুয়াল কুয়েরি উদাহরণ
কুয়েরি ফলাফল ভিজ্যুয়ালি প্রদর্শন করতে একটি সহজ ডায়াগ্রাম ব্যবহার করা কার্যকর হতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত চিত্রটি BETWEEN কীভাবে কাজ করে তা ব্যাখ্যা করে:
Price range: [----- 1000 ---- 5000 -----]
Product A price: 3000 (within range)
Product B price: 6000 (outside range)
এ ধরনের ডায়াগ্রাম ব্যবহার করলে নির্দিষ্ট কুয়েরি রেঞ্জের মধ্যে ডেটা পড়ে কিনা তা স্বজ্ঞাতভাবে বোঝা সহজ হয়।
৯. সারসংক্ষেপ
BETWEEN অপারেটর MySQL-এ রেঞ্জ-ভিত্তিক অনুসন্ধান করার সময় অত্যন্ত উপযোগী একটি টুল। এটি সংখ্যাসূচক, তারিখ এবং স্ট্রিং ডেটার উপর প্রয়োগ করা যায়, যা কুয়েরিগুলোকে সংক্ষিপ্ত এবং কার্যকরভাবে লিখতে সহায়তা করে। তবে, সীমানা মানের অন্তর্ভুক্তি এবং সঠিক সূচিকরণ ব্যবহার ইত্যাদি মূল বিষয়গুলো বোঝা গুরুত্বপূর্ণ। এই জ্ঞানকে কাজে লাগিয়ে আপনি ডেটাবেস কুয়েরি পারফরম্যান্স অপ্টিমাইজ করতে এবং প্রয়োজনীয় ডেটা কার্যকরভাবে বের করতে পারেন।
১০. রেফারেন্স
আরও বিশদ এবং অতিরিক্ত ব্যবহার উদাহরণের জন্য, অফিসিয়াল MySQL ডকুমেন্টেশন এবং বিশেষায়িত ডেটাবেস টেক্সটবুকগুলো দেখুন। নিজে কুয়েরি অনুশীলন করলে BETWEEN অপারেটর সম্পর্কে আপনার বোঝাপড়া আরও গভীর হবে।


