MySQL IS NULL और IS NOT NULL (उदाहरण सहित)

⚡ स्मार्ट सारांश

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

  • 🧩 मूल परिभाषा: NULL एक ऐसा मान है जो उस डेटा को दर्शाता है जो मौजूद नहीं है। यह कोई डेटा प्रकार नहीं है, और न ही यह शून्य संख्या है।
  • अंकगणितीय व्यवहार: कोई भी अंकगणितीय व्यंजक जिसमें NULL शामिल होता है, NULL ही लौटाता है, इसलिए 69 + NULL का मान 69 के बजाय NULL ही होता है।
  • 📊 समग्र प्रभाव: COUNT(column) और अन्य एग्रीगेट फ़ंक्शन NULL पंक्तियों को छोड़ देते हैं, जबकि COUNT(*) अभी भी तालिका में प्रत्येक पंक्ति की गणना करता है।
  • 🚫 NOT NULL बाधा: किसी कॉलम को NOT NULL घोषित करने से मान को छोड़ देने वाले किसी भी इंसर्ट को अस्वीकार कर दिया जाता है, जो पहचानकर्ताओं जैसे अनिवार्य फ़ील्ड की सुरक्षा करता है।
  • 🔍 सही फ़िल्टरिंग: IS NULL और IS NOT NULL ही एकमात्र विश्वसनीय परीक्षण हैं, क्योंकि समानता ऑपरेटर कभी भी NULL मान से मेल नहीं खाता है।
  • त्रि-मूल्यवान तर्क: NULL के विरुद्ध तुलना करने पर UNKNOWN मान प्राप्त होता है, इसलिए SELECT NULL = NULL से TRUE के बजाय NULL प्राप्त होता है।

MySQL शून्य है और शून्य नहीं है

SQL में, NULL एक मान और एक कीवर्ड दोनों है। आइए पहले NULL मान को समझते हैं।

MySQL शून्य है और शून्य नहीं है

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 email
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 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL 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 कार्यक्षेत्र अनिवार्य कॉलम छूट जाने के कारण निम्नलिखित त्रुटि उत्पन्न होती है।

NOT NULL मान

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 email
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 की स्थिति में निश्चित उत्तर देते हैं।

अक्सर पूछे जाने वाले प्रश्न

शून्य एक संख्या है और खाली स्ट्रिंग टेक्स्ट है, इसलिए दोनों समानता परीक्षणों पर खरे उतरते हैं। NULL का मतलब है कि कोई मान प्रदान नहीं किया गया है, इसलिए यह केवल IS NULL और IS NOT NULL का ही जवाब देता है।

IFNULL(column, 'N/A') कॉलम के NULL होने पर उसका विकल्प लौटाता है। COALESCE(a, b, c) पहला ऐसा आर्गुमेंट लौटाता है जो NULL नहीं है। दोनों फ़ंक्शन आंतरिक उपयोगों के लिए उपयोगी हैं। MySQL कार्यों और रिपोर्ट।

नहीं. MySQL यह इंडेक्स प्रत्येक प्राइमरी की कॉलम पर स्वचालित रूप से NOT NULL लागू करता है, क्योंकि पंक्ति को पहचानने वाली कुंजी अनुपस्थित नहीं हो सकती। UNIQUE इंडेक्स इससे अलग है और इसमें कई NULL मानों की अनुमति होती है।

आमतौर पर, हाँ। AI सहायकों का उपयोग उपकरणों के अंदर किया जाता है, जैसे कि MySQL कार्यक्षेत्र “जिन सदस्यों के पास फ़ोन नंबर नहीं है” को WHERE कॉलम IS NULL क्लॉज़ में बदलें। Revफ़िल्टर को देखें, क्योंकि NULL के विरुद्ध समानता परीक्षण चुपचाप कुछ भी वापस नहीं करता है।

अक्सर, हाँ। एआई समीक्षा उपकरण = NULL तुलनाओं जैसी त्रुटियों को चिह्नित करते हैं, चुनते हैं यह एक ऐसे कॉलम का औसत निकालता है जिसमें NULL मान मौजूद हैं, और उन सूचियों में शामिल नहीं है जिनमें NULL मान मौजूद हैं। अंतिम निर्णय उस व्यक्ति का होता है जिसे डेटा की जानकारी हो।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: