কেন BETWEEN — আগে গল্প
মূল প্রশ্ন: কোনো value একটি নির্দিষ্ট range-এর মধ্যে আছে কিনা কীভাবে খুঁজব?
যেসব student-এর marks 70 থেকে 80-এর মধ্যে, তাদের কীভাবে খুঁজব?
যেসব employee-এর salary 50,000 থেকে 80,000-এর মধ্যে?
January থেকে March-এর মধ্যে হওয়া orders?
গল্প ১ — School (৫,০০০ student)
Teacher: “marks 70 থেকে 80-এর মধ্যে list দাও।”
70, 71, 72… 80 manually লিখে search করা কি practical?
কঠিন কিন্তু কাজ করে
একই কাজ সহজভাবে: BETWEEN।
গল্প ২ — Employee Salary
গল্প ৩ — E-commerce Price
গল্প ৪ — Bank Balance
balance 10,000 থেকে 100,000 — range-based filtering।
গল্প ৫ — Date Range
2026-এর January 1 থেকে January 31-এর orders — BETWEEN শুধু number নয়, date-এও।
BETWEEN কী?
BETWEEN = SQL operator যা বলে: column-এর value কি দুই সীমার মধ্যে?
- কেন: range লেখা ছোট ও পড়া সহজ
- কখন: marks, salary, price, date — continuous range
- Range: শুরু থেকে শেষ পর্যন্ত ব্যবধান
- Lower bound: ছোট/শুরুর সীমা
- Upper bound: বড়/শেষ সীমা
শুধু number নয় — date (এবং অনেক সময় text order) ও ব্যবহার হয়।
Basic BETWEEN সিনট্যাক্স
BETWEEN vs >= AND <=
BETWEEN
>= AND <=
সাধারণ numeric comparison-এ দুটোই একই range logic।
| BETWEEN | AND (>= <=) |
|---|---|
marks BETWEEN 70 AND 80 | marks >= 70 AND marks <= 80 |
| Shorter | Longer |
| Easy to read | More explicit |
| Good for simple ranges | Useful for complex / datetime control |
Numeric BETWEEN
Sample students (১৮ rows):
| id | name | dept | marks | age |
|---|---|---|---|---|
| 1 | Rahim | CSE | 72 | 19 |
| 2 | Karim | EEE | 65 | 21 |
| 3 | Sara | CSE | 80 | 18 |
| 4 | Nila | BBA | 70 | 20 |
| 5 | Jamal | CSE | 55 | 22 |
| 6 | Ayesha | EEE | 78 | 19 |
| 7 | Hasan | BBA | 91 | 23 |
| 8 | Mitu | CSE | 74 | 18 |
| 9 | Rafi | EEE | 68 | 20 |
| 10 | Lina | BBA | 83 | 21 |
| 11 | Omar | CSE | 76 | 19 |
| 12 | Tania | EEE | 60 | 24 |
| 13 | Imran | BBA | 79 | 22 |
| 14 | Farah | CSE | 45 | 17 |
| 15 | Sabbir | EEE | 88 | 20 |
| 16 | Rina | BBA | 71 | 18 |
| 17 | Kabir | CSE | 67 | 25 |
| 18 | Meena | EEE | 75 | 19 |
Example 1 — Marks 70–80
লাইন বাই লাইন: WHERE marks filter → BETWEEN inclusive → matching rows।
Example 2 — Age 18–22
Example 3 — Salary
Example 4 — Product price
BETWEEN 500 AND 2000NOT BETWEEN
499 ও 2001 আসে; 500–2000 আসে না।
BETWEEN with Dates / DATETIME
Business: “January মাসের সব orders বের করো।”
Monthly / Quarterly / Joining year
DATETIME সতর্কতা (বিগিনার → প্রো অভ্যাস)
যদি column-এ time থাকে, যেমন 2026-01-31 18:30:00, তাহলে end boundary '2026-01-31' অনেক engine-এ midnight (00:00:00) বোঝায় — সন্ধ্যার row বাদ যেতে পারে।
Safer half-open range (professional)
BETWEEN + AND / OR
BETWEEN + AND
BETWEEN + OR (দুই range)
BETWEEN + ORDER BY + LIMIT
Business: “500 থেকে 5,000 টাকার মধ্যে সবচেয়ে দামি 10টি product দেখাও।”
BETWEEN + GROUP BY
“50,000–80,000 salary range-এর employees department অনুযায়ী count করো।”
= / IN / BETWEEN / LIKE / REGEXP
| Operator | Main Purpose | Example |
|---|---|---|
= | Exact value | age = 20 |
IN | Specific values | age IN (18,20,22) |
BETWEEN | Range | age BETWEEN 18 AND 22 |
LIKE | Simple text pattern | name LIKE 'A%' |
REGEXP | Complex text pattern | name REGEXP '^A' |
Specific values → IN
শুধু ১৮, ২০, ২২ — ১৯/২১ নেই।
Continuous range → BETWEEN
১৮ থেকে ২২ সব বয়স।
BETWEEN vs WHERE >= <=
| Requirement | BETWEEN | >= <= |
|---|---|---|
| Simple range | Excellent | Good |
| Readability | High | High |
| Complex conditions | Limited | More flexible |
| DateTime handling | Requires care | Often clearer |
BETWEEN inclusive; explicit inequalities দিয়ে datetime boundary নিয়ন্ত্রণ সহজ।
E-commerce Business Case Study
Products (নমুনা)
| id | name | category | brand | price | stock |
|---|---|---|---|---|---|
| P01 | USB Cable | Accessories | Anker | 450 | 120 |
| P02 | Mouse | Accessories | Logitech | 850 | 80 |
| P03 | Keyboard | Accessories | Logitech | 1800 | 45 |
| P04 | SSD 500GB | Storage | Samsung | 4200 | 30 |
| P05 | HDD 1TB | Storage | WD | 3500 | 25 |
| P06 | Monitor 24 | Display | Dell | 14500 | 12 |
| P07 | Webcam | Accessories | Logitech | 2200 | 40 |
| P08 | Headset | Audio | Sony | 3200 | 35 |
| P09 | Power Bank | Accessories | Xiaomi | 1500 | 60 |
| P10 | Router | Network | TP-Link | 2800 | 22 |
| P11 | Phone Case | Accessories | Spigen | 600 | 200 |
| P12 | Laptop Stand | Accessories | Generic | 1200 | 50 |
Orders (নমুনা)
| order_id | customer_id | order_date | total_amount | city |
|---|---|---|---|---|
| O01 | C1 | 2026-01-05 | 12000 | Dhaka |
| O02 | C2 | 2026-01-18 | 45000 | Chittagong |
| O03 | C3 | 2026-02-02 | 8000 | Dhaka |
| O04 | C4 | 2026-03-10 | 32000 | Sylhet |
| O05 | C5 | 2026-01-31 | 55000 | Dhaka |
| O06 | C6 | 2026-04-01 | 15000 | Khulna |
| O07 | C7 | 2026-02-20 | 21000 | Rajshahi |
| O08 | C8 | 2026-03-28 | 9500 | Dhaka |
Employees (নমুনা)
| id | name | dept | salary | joining_date |
|---|---|---|---|---|
| E01 | Arif | IT | 55000 | 2025-03-01 |
| E02 | Bela | Sales | 42000 | 2024-06-15 |
| E03 | Chayan | IT | 78000 | 2025-11-20 |
| E04 | Dipa | HR | 60000 | 2025-01-10 |
| E05 | Emon | Sales | 90000 | 2023-08-01 |
| E06 | Faria | IT | 50000 | 2025-07-07 |
| E07 | Gazi | Finance | 70000 | 2024-12-01 |
| E08 | Hena | HR | 48000 | 2025-09-15 |
সমাধান (১১টি প্রশ্ন)
WHERE price BETWEEN 500 AND 2000→ Mouse, Keyboard, Power Bank, Phone Case, Laptop Stand…WHERE price BETWEEN 2000 AND 5000→ SSD, HDD, Webcam, Headset, Router…WHERE price NOT BETWEEN 500 AND 2000WHERE price BETWEEN 500 AND 5000 ORDER BY price DESC LIMIT 10WHERE total_amount BETWEEN 10000 AND 50000WHERE order_date BETWEEN '2026-01-01' AND '2026-01-31'(DATE) / half-open যদি DATETIME- Q1:
BETWEEN '2026-01-01' AND '2026-03-31' - Date range +
ORDER BY total_amount DESC salary BETWEEN 50000 AND 80000joining_date BETWEEN '2025-01-01' AND '2025-12-31'WHERE salary BETWEEN 50000 AND 80000 GROUP BY department+ COUNT
MySQL Workbench Practical
Step 1–3: DB + table + data
Step 4–12 practice checklist
SELECT * FROM products;- Numeric BETWEEN 500–2000
- NOT BETWEEN
- Date BETWEEN (orders table তৈরি করে)
- BETWEEN + AND (category)
- BETWEEN + OR (দুই price band)
- ORDER BY price DESC
- LIMIT 5
- GROUP BY category with price range
BETWEEN 2000 AND 500 (reverse) — empty/unexpected। Lower আগে লেখো।Common Beginner Mistakes
1 — Boundary confusion
BETWEEN 70 AND 80 মানে সাধারণত 70–80 inclusive — শুধু 71–79 নয়।
2 — Reversing values
Lower → Upper ক্রম রাখো।
3 — Unrelated values
BETWEEN সবচেয়ে ভালো ordered/continuous range-এ। ছিটানো নির্দিষ্ট মান → IN।
4 — BETWEEN vs IN
5 — DATETIME
6 — Quotes
Numbers: BETWEEN 500 AND 2000 · Dates: BETWEEN '2026-01-01' AND '2026-01-31'
SQL Execution Flow (simplified)
Industry Use Cases
- Data Analyst: salary / sales / spending / age groups
- Data Scientist: feature filter, explore ranges
- BI: KPI date filters, sales periods
- Finance: transaction amounts, revenue bands
- HR: salary bands, joining years
- E-commerce: price filters, order value, promo windows
Performance Tips (beginner)
- Range filter সাধারণ; সঠিক index থাকলে দ্রুত হতে পারে
- বারবার BETWEEN করা column (price, order_date) index candidate
- Indexed column-এর চারপাশে অপ্রয়োজনীয় function এড়াও
- DATETIME-এ সঠিক boundary ব্যবহার করো
- শুধু দরকারি range নাও — হাজার হাজার অপ্রয়োজনীয় row টানো না
Interactive Classroom Activities
কার্ডে ক্লিক করে উত্তর দেখো।
Mini Project — E-commerce Sales Analysis
Part 13-এর tables ব্যবহার করে company analytics:
- Products 500–2000
- Products outside 500–2000
- Orders 10000–50000
- January 2026 orders
- Q1 2026 orders
- Employees 50000–80000
- Hired during 2025
- Top 10 products 500–5000
- Dept-wise count in salary range
- Dept-wise AVG(salary) in same range
BETWEEN Cheat Sheet
BETWEEN
number:
price BETWEEN 500 AND 2000
date:
order_date BETWEEN '2026-01-01' AND '2026-01-31'
NOT BETWEEN:
price NOT BETWEEN 500 AND 2000
multiple:
salary BETWEEN 50000 AND 80000
AND department = 'IT'
DATETIME month (safer):
order_date >= '2026-01-01'
AND order_date < '2026-02-01'
BETWEEN = inclusive range
10 ✅ … 20 ✅
MCQ (২০+)
Viva Questions
Interview Top 30
Homework
প্রশ্ন (আগে নিজে সমাধান করো):
- Products priced 500–2000
- Products priced 2000–5000
- Products outside 500–2000
- Orders amount 10000–50000
- Orders January 2026
- Orders Q1 2026
- Employees salary 50000–80000
- Employees hired in 2025
- Top 5 products price 500–5000
- Dept-wise count for salary 50000–80000
উত্তর (ক্লিক করে দেখো):