MySQL + SQL · Lesson 50
IS NULL और IS NOT NULL
NULL का सही अर्थ
NULL missing, unknown या not-applicable information दर्शाता है। यह zero, FALSE, blank string या “NULL” word नहीं है। Result घोषित न होने पर marks NULL हो सकते हैं; zero score एक known value है।
Common learning data:
students में Aarav (X-A, 86.50, Active), Meera (X-A, 91.00, Active), Kabir (X-B, 74.00, Inactive) और Sana (X-B, 88.50, Active) हैं।Model first: NULL तभी allow करें जब absence का clear meaning हो। हर student का status required हो तो NOT NULL और valid constraint रखें।
IS NULL और IS NOT NULL
SELECT student_id, full_name
FROM students
WHERE marks IS NULL;
SELECT student_id, full_name, marks
FROM students
WHERE marks IS NOT NULL
ORDER BY student_id;पहली query missing और दूसरी recorded marks खोजती है। marks = NULL या marks <> NULL न लिखें।
NULL और Three-Valued Logic
| Expression | Result |
|---|---|
NULL = NULL | UNKNOWN |
NULL <> 80 | UNKNOWN |
NULL IS NULL | TRUE |
NULL IS NOT NULL | FALSE |
NULL <=> NULL | MySQL में TRUE |
UNKNOWN WHERE pass नहीं करता। इसी कारण NULL वाली list में NOT IN surprise दे सकता है।
COUNT, Arithmetic और Fallback
SELECT COUNT(*) AS total_rows,
COUNT(marks) AS recorded_marks,
AVG(marks) AS average_recorded_marks
FROM students;total_rows = 4
recorded_marks = 4
average_recorded_marks = 85.00
Most aggregates NULL ignore करते हैं; COUNT(*) rows count करता है। NULL वाला arithmetic सामान्यतः NULL देता है। Display fallback:
SELECT full_name,
COALESCE(CAST(marks AS CHAR), 'Not recorded') AS marks_display
FROM students;Design और Safe Updates
Unknown valid हो तो NULL, mandatory हो तो NOT NULL और valid choices के लिए CHECK/foreign key लें। Missing data भरने से पहले preview करें:
START TRANSACTION;
SELECT student_id, full_name FROM students
WHERE marks IS NULL FOR UPDATE;
UPDATE students SET marks = 0
WHERE marks IS NULL;
-- Verify करें कि zero का वही अर्थ है।
ROLLBACK;Report आसान करने के लिए unknown को zero न बनाएँ। Meaning बदलता और average गलत घट सकता है।
गलतियाँ और अभ्यास
- = NULL लिखना।
- हर column में empty text को unknown मानना।
- Aggregates के NULL behavior को भूलना।
- Business meaning से पहले COALESCE लगाना।
- NULL marks वाली practice row जोड़कर COUNT(*) और COUNT(marks) compare करें।
- केवल recorded marks खोजें।
- Stored NULL बदले बिना “Pending” दिखाएँ।
- Zero और NULL का AVG पर अंतर समझाएँ।
त्वरित सारांश
- NULL का अर्थ known value नहीं है।
- IS NULL या IS NOT NULL से test करें।
- WHERE UNKNOWN reject और most aggregates NULL ignore करते हैं।
- Fallback display बदलता है, underlying meaning नहीं।
Official संदर्भ
References 14 August 2026 को review किए गए।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
क्या NULL zero या empty string के समान है?
नहीं। NULL का अर्थ known value उपलब्ध नहीं है। Zero और empty string अपने types की known values हैं।
= NULL कोई row क्यों नहीं देता?
NULL से ordinary comparison UNKNOWN देता है और WHERE केवल TRUE रखता है। IS NULL उपयोग करें।
क्या COUNT(column) NULL values count करता है?
नहीं। COUNT(column) non-NULL values गिनता है; COUNT(*) individual columns के NULL होने पर भी rows गिनता है।
NULL के स्थान पर fallback कैसे दिखाएँ?
COALESCE(expression, fallback) या MySQL IFNULL उपयोग करें, पर business rule बिना stored meaning overwrite न करें।
क्या NOT NULL column में भी validation चाहिए?
हाँ। NOT NULL केवल NULL रोकता है; empty string, zero या invalid business value को अन्य constraints के बिना नहीं रोकता।
💻 लाइव कोड एडिटर
इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.