MySQL IS NULL और IS NOT NULL (उदाहरण सहित)
⚡ स्मार्ट सारांश
MySQL IS NULL और IS NOT NULL तुलनात्मक कीवर्ड हैं जो यह जांचते हैं कि किसी कॉलम में कोई मान अनुपस्थित है या नहीं। NULL अनुपस्थित डेटा को दर्शाता है, शून्य या खाली स्ट्रिंग से अलग व्यवहार करता है, और विश्वसनीय फ़िल्टरिंग के लिए विशेष ऑपरेटरों की आवश्यकता होती है।

SQL में, NULL एक मान और एक कीवर्ड दोनों है। आइए पहले NULL मान को समझते हैं।
NULL का मतलब क्या है? MySQL?
आसान शब्दों में, NULL उस डेटा के लिए एक प्लेस होल्डर है जो मौजूद नहीं है।टेबलों पर इंसर्ट ऑपरेशन करते समय, कई बार ऐसा होगा जब कुछ फ़ील्ड के मान उपलब्ध नहीं होंगे।
वास्तविक रिलेशनल डेटाबेस प्रबंधन प्रणालियों की आवश्यकताओं को पूरा करने के लिए, MySQL यह डेटाबेस उन मानों के लिए NULL का उपयोग करता है जिन्हें सबमिट नहीं किया गया है। नीचे दिया गया स्क्रीनशॉट दिखाता है कि डेटाबेस टेबल में NULL मान कैसे दिखते हैं।
ध्यान दें कि खाली सेल को NULL से चिह्नित किया गया है, न कि खाली टेक्स्ट या शून्य से। आगे बढ़ने से पहले, NULL की कुछ बुनियादी बातों को समझ लें।
- NULL एक डेटा प्रकार नहीं है - इसका मतलब है कि इसे "int", "date" या किसी अन्य परिभाषित डेटा प्रकार के रूप में मान्यता नहीं दी गई है।
- अंकगणितीय आपरेशनस शामिल नल हमेशा शून्य लौटाएंउदाहरण के लिए, 69 + NULL = NULL.
- बहुत से समग्र कार्य उन पंक्तियों को अनदेखा करें जिनमें NULL मान हैंइसका एकमात्र अपवाद COUNT(*) है, जो NULL की परवाह किए बिना प्रत्येक पंक्ति की गणना करता है।
एग्रीगेट फ़ंक्शन NULL को कैसे मानते हैं
यह नियम रिपोर्टिंग क्वेरी द्वारा दिए जाने वाले उत्तरों को बदल देता है, तो चलिए इसे सिद्ध करते हैं। सदस्यों की तालिका की वर्तमान सामग्री से शुरुआत करें।
SELECT * FROM `members`;
उपरोक्त स्क्रिप्ट को निष्पादित करने से हमें निम्नलिखित परिणाम प्राप्त होते हैं।
| membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
हाइलाइट किए गए contact_number कॉलम में कुल नौ पंक्तियाँ हैं, लेकिन उनमें से दो NULL हैं। आइए उन सभी सदस्यों की गणना करें जिन्होंने अपना संपर्क नंबर अपडेट किया है।
SELECT COUNT(contact_number) FROM `members`;
उपरोक्त क्वेरी को निष्पादित करने से हमें निम्नलिखित परिणाम प्राप्त होते हैं।
| COUNT(contact_number) |
|---|
| 7 |
नोट: उत्तर 7 है, 9 नहीं, क्योंकि दो NULL मान शामिल नहीं किए गए थे। उसी तालिका पर COUNT(*) चलाने पर 9 प्राप्त होगा, क्योंकि COUNT(*) पंक्तियों की गणना करता है, न कि मानों की।
NOT NULL मान
अधिक सुरक्षित तरीका यह है कि अनिवार्य कॉलम में NULL मानों को आने से पूरी तरह रोका जाए। यही काम NOT NULL कंस्ट्रेंट करता है।
NOT क्या है? Operaटोर?
NOT लॉजिकल ऑपरेटर का उपयोग बूलियन स्थितियों का परीक्षण करने के लिए किया जाता है, और यदि स्थिति असत्य है तो यह सत्य लौटाता है। यदि परीक्षण की जा रही स्थिति सत्य है तो NOT ऑपरेटर असत्य लौटाता है।
| रोग की स्थिति | नहीं Operator परिणाम |
|---|---|
| यह सच है | झूठा |
| झूठा | यह सच है |
NOT NULL का उपयोग क्यों करें?
कुछ मामलों में हमें क्वेरी परिणाम सेट पर गणना करनी होती है और मान वापस करने होते हैं। किसी ऐसे कॉलम पर कोई भी अंकगणितीय संक्रिया करने पर जिसमें NULL मान हो, परिणाम NULL ही प्राप्त होता है। ऐसी स्थितियों से बचने के लिए, हम NOT NULL क्लॉज़ का उपयोग करके उन परिणामों को सीमित कर सकते हैं जिन पर हमारा डेटा कार्य करता है।
NOT NULL कॉलम वाली तालिका बनाना
मान लीजिए कि हम एक ऐसी तालिका बनाना चाहते हैं जिसमें कुछ ऐसे फ़ील्ड हों जिनमें नई पंक्तियाँ डालते समय हमेशा मान भरे जाने चाहिए। तालिका बनाते समय हम किसी दिए गए फ़ील्ड पर NOT NULL क्लॉज़ का उपयोग कर सकते हैं।
नीचे दिए गए उदाहरण में एक नई तालिका बनाई गई है जिसमें कर्मचारी डेटा शामिल है। कर्मचारी संख्या हमेशा प्रदान की जानी चाहिए।
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
अब हम कर्मचारी संख्या निर्दिष्ट किए बिना एक नया रिकॉर्ड डालने का प्रयास करते हैं और देखते हैं कि क्या होता है।
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
उपरोक्त स्क्रिप्ट को निष्पादित करना MySQL कार्यक्षेत्र अनिवार्य कॉलम छूट जाने के कारण निम्नलिखित त्रुटि उत्पन्न होती है।
IS NULL और IS NOT NULL कीवर्ड
यह प्रतिबंध नए NULL मानों को अवरुद्ध करता है। पहले से मौजूद NULL मानों के साथ काम करने के लिए, NULL का उपयोग कीवर्ड के रूप में किया जाता है। इसका सिंटैक्स इस प्रकार है।
column_name IS NULL column_name IS NOT NULL
यहाँ
- “शून्य है” वह कीवर्ड है जो बूलियन तुलना करता है। यदि दिया गया मान NULL है तो यह true लौटाता है और यदि दिया गया मान NULL नहीं है तो यह false लौटाता है।
- “शून्य नहीं है” यह वह कीवर्ड है जो विपरीत तुलना करता है। यह true लौटाता है यदि दिया गया मान NULL नहीं है और false लौटाता है यदि दिया गया मान NULL है।
आइए एक व्यावहारिक उदाहरण देखें जिसमें किसी कॉलम में NULL मान रखने वाली सभी पंक्तियों को हटाने के लिए IS NOT NULL कीवर्ड का उपयोग किया गया है।
ऊपर दी गई सदस्यों की तालिका को जारी रखते हुए, मान लीजिए कि हमें उन सदस्यों का विवरण चाहिए जिनका संपर्क नंबर NULL नहीं है। हम इस तरह की क्वेरी चला सकते हैं।
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
उपरोक्त क्वेरी को निष्पादित करने पर केवल वे सात रिकॉर्ड प्राप्त होते हैं जिनमें संपर्क संख्या मौजूद है, जो पिछले अनुभाग के COUNT परिणाम से मेल खाता है।
अब मान लीजिए कि हमें इसका विपरीत चाहिए: वे सदस्य रिकॉर्ड जिनमें संपर्क संख्या मौजूद नहीं है। हम निम्न क्वेरी का उपयोग कर सकते हैं।
SELECT * FROM `members` WHERE contact_number IS NULL;
उपरोक्त क्वेरी को निष्पादित करने पर उन दो सदस्य रिकॉर्ड प्राप्त होते हैं जिनका संपर्क नंबर NULL है।
| membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
चेतावनी: WHERE contact_number = NULL जैसी शर्त एक खाली परिणाम सेट लौटाती है, भले ही NULL मान मौजूद हों। समानता ऑपरेटर कभी भी NULL से मेल नहीं खा सकता, इसलिए IS NULL ही एकमात्र सही परीक्षण है।
तीन-मूल्य वाले तर्क का उपयोग करके NULL मानों की तुलना करना
तीन-मूल्य तर्क NULL से संबंधित शर्तों पर बूलियन ऑपरेशन करने से त्रुटि आ सकती है। “अज्ञात”, “सत्य” या “असत्य”.
“IS NULL” कीवर्ड का उपयोग करना तुलनात्मक कार्य करते समय NULL शामिल रिटर्न <strong>उद्देश्य</strong> or असत्यअन्य तुलना ऑपरेटरों का उपयोग करने पर यह परिणाम देता है। “अज्ञात” (NULL)नीचे दी गई तालिका प्रत्येक अभिव्यक्ति की तुलना साथ-साथ करती है।
| अभिव्यक्ति | परिणाम | अर्थ |
|---|---|---|
| SELECT 5 = 5; | 1 | जब सही है |
| SELECT NULL = NULL; | नल | अज्ञात |
| SELECT 5 > 5; | 0 | असत्य |
| SELECT NULL > NULL; | नल | अज्ञात |
| SELECT 5 IS NULL; | 0 | असत्य |
| SELECT NULL IS NULL; | 1 | जब सही है |
संख्या पाँच की तुलना स्वयं से करें, फिर यही क्रिया NULL के साथ दोहराएँ।
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
पहला परिणाम 1 (TRUE) है। दूसरा NULL है, क्योंकि MySQL यह नहीं कहा जा सकता कि एक अज्ञात मान दूसरे अज्ञात मान के बराबर है। अब समान मानों पर IS NULL कीवर्ड का प्रयोग करें।
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
इस बार उत्तर निश्चित हैं: 0 (गलत) और 1 (सही)। केवल IS NULL और IS NOT NULL कीवर्ड ही NULL की स्थिति में निश्चित उत्तर देते हैं।


