কেন NULL — আগে গল্প
একজন employee-এর phone number database-এ দেওয়া নেই। তাহলে phone-এর জায়গায় কী রাখব?
Hasan-এর phone কি 0? Empty text? আমরা কি value জানি?
প্রত্যাশিত উত্তর: না / না / না → Unknown/Missing → NULL
গল্প ১ — Student Phone
| Student | Phone |
|---|---|
| Rahim | 01711111111 |
| Karim | 01822222222 |
| Hasan | NULL |
| Nila | 01944444444 |
Hasan-এর phone = 0 বা '' নয় — information missing/unknown।
গল্প ২ — Employee Bonus
| Employee | Salary | Bonus |
|---|---|---|
| Rahim | 50000 | 10000 |
| Karim | 60000 | NULL |
| Hasan | 70000 | 15000 |
Karim কি bonus পায়নি? জানি না — না লেখা / হিসাব হয়নি / eligible নয় — business meaning আলাদা হতে পারে।
গল্প ৩ — Customer Email
Customer B-এর email NULL = জানা নেই / stored হয়নি।
গল্প ৪ — Resignation Date
| Employee | Resignation_Date |
|---|---|
| Rahim | NULL |
| Karim | 2026-01-10 |
NULL কী?
| Value | Meaning |
|---|---|
0 | Number zero |
'' | Empty string |
'NULL' | Text containing the word NULL |
NULL | Missing/unknown/no value |
NULL vs 0 vs Empty String
| Data | Meaning |
|---|---|
0 | Zero |
'' | Empty text |
' ' | Space |
'NULL' | Text |
NULL | No known value |
Salary = 0 → বেতন শূন্য। Salary = NULL → বেতনের তথ্য নেই/অজানা।
কেন = NULL কাজ করে না
NULL ordinary value নয় — = দিয়ে compare করা যায় না।
SQL-এ তিন ধরনের ফল (three-valued logic) — সহজ করে:
Database value না জানলে comparison TRUE/FALSE না হয়ে UNKNOWN হতে পারে — WHERE সাধারণত শুধু TRUE rows রাখে।
IS NULL
Phone / Email / Resignation
লাইন বাই লাইন: WHERE → column check → IS NULL → missing rows।
IS NOT NULL
IS NULL vs IS NOT NULL
| Condition | Meaning |
|---|---|
IS NULL | Value missing |
IS NOT NULL | Value exists |
NULL with WHERE
NULL with AND / OR
দুটিই missing।
অন্তত একটি missing।
NULL with NOT IN
| Employee | Department |
|---|---|
| A | IT |
| B | HR |
| C | Finance |
| D | NULL |
WHERE department NOT IN ('IT','HR') — NULLকে “আরেকটি department” বলে ধরে না; NULL rows অপ্রত্যাশিতভাবে বাদ যেতে পারে।
NULL with Aggregate Functions
| Employee | Salary |
|---|---|
| A | 50000 |
| B | 60000 |
| C | NULL |
| D | 80000 |
| Function | NULL Handling |
|---|---|
COUNT(*) | Counts rows |
COUNT(column) | Counts non-NULL values |
SUM / AVG / MIN / MAX | Ignores NULL |
NULL with GROUP BY
COALESCE()
Dashboard-এ bonus NULL দেখালে user বিভ্রান্ত — কখনো কখনো 0 দেখাতে চাই (business decide করে)।
| Before | After COALESCE(...,0) |
|---|---|
| 10000 | 10000 |
| NULL | 0 |
| 5000 | 5000 |
IFNULL() — MySQL
| COALESCE | IFNULL |
|---|---|
| SQL-standard | MySQL-common |
| Multiple expressions | Two arguments |
| More portable | MySQL-focused |
দুই-argument ক্ষেত্রে COALESCE(bonus,0) ≈ IFNULL(bonus,0)।
NULLIF()
দুই value একই হলে NULL; আলাদা হলে প্রথম value।
Divide-by-zero এড়ানো (বিগিনার)
quantity 0 হলে ভাগের আগে NULL → division error এড়ানো যায়।
CASE WHEN with NULL
NULL with ORDER BY
NULL কোথায় বসবে DB/engine অনুযায়ী ভিন্ন হতে পারে — ধরে নিও না সবসময় একই।
MySQL-এ placement নিয়ন্ত্রণ (উদাহরণ)
NULL with DISTINCT
অনেক row-এ department NULL থাকলেও DISTINCT-এ NULL সাধারণত একবার দেখা যায়।
NULL vs Empty String
IS NULL ≠ = '' — আলাদা জিনিস।| Condition | Finds |
|---|---|
email IS NULL | NULL values |
email = '' | Empty strings |
email IS NOT NULL | Non-NULL values |
email <> '' | Non-empty; NULL behavior সাবধান |
একই column-এ NULL এবং '' দুটোই থাকতে পারে।
NULL Data Cleaning / Data Quality
1,000,000 customers — Email 50k NULL, Phone 20k NULL, City 5k NULL।
- Detect missing
- Measure how many
- Why missing?
- Business treatment decide
- Replace only when appropriate
- Blindly সব NULL → 0 নয়
Employee Management Case Study
নমুনা employees (intentional NULL সহ) — Workbench-এ পূর্ণ ৩০+ row INSERT করবে; এখানে কেন্দ্রীয় কলাম:
| id | name | dept | salary | bonus | phone | resign | |
|---|---|---|---|---|---|---|---|
| 1 | Rahim | IT | 50000 | 10000 | 017… | r@x.com | NULL |
| 2 | Karim | IT | 60000 | NULL | NULL | k@x.com | NULL |
| 3 | Hasan | HR | 70000 | 15000 | 019… | NULL | NULL |
| 4 | Nila | NULL | 55000 | NULL | 018… | n@x.com | NULL |
| 5 | Sumi | Finance | 80000 | 20000 | 016… | s@x.com | 2026-01-10 |
| 6 | Arif | HR | NULL | 5000 | NULL | NULL | NULL |
| 7 | Bela | Sales | 45000 | 0 | 015… | NULL | |
| 8 | Chayan | IT | 90000 | NULL | 014… | c@x.com | NULL |
(Lab-এ আরও rows যোগ করো — মোট ৩০+।)
১৬টি ব্যবসায়িক প্রশ্ন → SQL ধারণা
phone IS NULLemail IS NULLbonus IS NULLbonus IS NOT NULLresignation_date IS NULL(এখনও active)department IS NULLCOUNT(*) … WHERE email IS NULLGROUP BY department(NULL group সহ)AVG(salary)— NULL ignoreCOUNT(*) vs COUNT(salary)COALESCE(bonus,0)COALESCE(email,'Not Available')- CASE bonus status
WHERE department IS NOT NULLNOT IN ('IT','HR') AND department IS NOT NULLsales/NULLIF(qty,0)বা bonus metrics সাবধানে
MySQL Workbench Practical
'NULL' (text) · Correct: keyword NULLSteps 4–15
SELECT * FROM employees;WHERE bonus IS NULL/ phone / emailIS NOT NULL- AND / OR missing fields
COUNT(*) vs COUNT(salary)GROUP BY departmentCOALESCE/IFNULLNULLIFdemo- CASE status
- Mini DQ: count NULL phones/emails
Common Beginner Mistakes
WHERE phone = NULL→IS NULLWHERE phone != NULL→IS NOT NULL- NULL / 0 /
''/'NULL'গুলিয়ে ফেলা - NULL = zero ভাবা
- NULL = empty text ভাবা
- সব NULL blindly → 0 (ভুল metric)
- NOT IN + NULL ignore
COUNT(*)vsCOUNT(col)গুলিয়ে ফেলা
NULL Decision Flowchart
Execution Flow with NULL
Simplified teaching model — NULL WHERE, GROUP, aggregates, ORDER-এ প্রভাব ফেলে।
Comparison Table
| Concept | Example | Meaning |
|---|---|---|
= NULL | bonus = NULL | Wrong approach |
IS NULL | bonus IS NULL | Find NULL |
IS NOT NULL | bonus IS NOT NULL | Find non-NULL |
COALESCE | COALESCE(bonus,0) | Replace NULL |
IFNULL | IFNULL(bonus,0) | MySQL replace |
NULLIF | NULLIF(a,b) | NULL when equal |
CASE WHEN | bonus IS NULL… | Custom logic |
Aggregate Walkthrough
NULL কে 0 ধরলে AVG ভুল হত (190000/4) — তাই ignore গুরুত্বপূর্ণ।
Interactive Activities
কার্ডে ক্লিক করে উত্তর দেখো।
Mini Project — HR Data Quality
- Missing phone count
- Missing email count
- Missing bonus count
- No resignation date (active)
- No department
- AVG(salary)
- COUNT(salary) available
- Show bonus as 0 when NULL
- Show email Not Available
- Bonus status CASE
- Dept-wise COUNT
- Exclude NULL departments
- NULL percentage phones
- Simple HR DQ report (combine metrics)
Industry Use Cases
- Analytics: missing customer info
- Data Science: missing features
- Data Engineering: ETL validation
- BI: display missing correctly
- Finance / HR / E-com: incomplete attributes
Best Practices
- IS NULL / IS NOT NULL correctly
- Understand NULL before metrics
- Careful with NOT IN
- COUNT(column) intentionally
- COALESCE only when business makes sense
- Don't auto-convert every NULL→0
- Document what NULL means per column
- DQ checks on critical fields
NULL ≠ 0
NULL ≠ ''
NULL ≠ 'NULL'
= NULL ❌
IS NULL ✅
IS NOT NULL ✅MCQ (২৫+)
Viva Questions
Interview Top 30
Homework
প্রশ্ন:
- NULL phones
- NULL emails
- NULL bonuses
- Non-NULL bonuses
- Count NULLs
- Count non-NULLs
- COUNT(*) vs COUNT(salary)
- COALESCE bonus 0
- COALESCE email Not Available
- CASE WHEN
- Handle NULL department
- GROUP BY with NULL
- Explain NULL vs 0
- NULL vs ''
- Why = NULL wrong