एसक्यूएल नल में एक मूल्य के साथ-साथ एक कीवर्ड दोनों है। आइए पहले NULL मान देखें -
मान के रूप में अशक्त
सरल शब्दों में, NULL केवल डेटा के लिए एक स्थान धारक है जो मौजूद नहीं है। तालिकाओं पर सम्मिलित ऑपरेशन करते समय, वे ऐसे समय होंगे जब कुछ फ़ील्ड मान उपलब्ध नहीं होंगे।
सच्चे संबंधपरक डेटाबेस प्रबंधन प्रणालियों की आवश्यकताओं को पूरा करने के लिए, MySQL उन मानों के लिए स्थान धारक के रूप में NULL का उपयोग करता है जिन्हें प्रस्तुत नहीं किया गया है। नीचे दिया गया स्क्रीनशॉट दिखाता है कि डेटाबेस में NULL मान कैसा दिखता है।
अब हम चर्चा में आगे बढ़ने से पहले NULL के लिए कुछ मूल बातें देखें।
- NULL एक डेटा प्रकार नहीं है - इसका मतलब यह है कि इसे "int", "दिनांक" या किसी अन्य परिभाषित डेटा प्रकार के रूप में मान्यता प्राप्त नहीं है।
- NULL से जुड़े अंकगणितीय ऑपरेशन हमेशा NULL के लिए उदाहरण के लिए, 69 + NULL = 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 को अपडेट किया है
SELECT COUNT(contact_number) FROM `members`;
उपरोक्त क्वेरी निष्पादित करने से हमें निम्नलिखित परिणाम मिलते हैं।
COUNT(contact_number) |
---|
7 |
नोट: ऐसे मान जो NULL हैं उन्हें शामिल नहीं किया गया है
क्या नहीं है?
नहीं तार्किक ऑपरेटर का उपयोग बूलियन स्थितियों के लिए परीक्षण करने के लिए किया जाता है और यदि स्थिति झूठी है, तो यह सच है। यदि परिक्षण सही है, तो ऑपरेटर सही नहीं है
स्थिति |
संचालक परिणाम नहीं |
सच |
असत्य |
असत्य |
सच |
क्यों नहीं नल का उपयोग करें?
ऐसे मामले होंगे जब हमें एक क्वेरी परिणाम सेट पर गणना करना होगा और मूल्यों को वापस करना होगा। उन स्तंभों पर कोई अंकगणितीय संक्रियाएँ करना जिनके पास 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 कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को निष्पादित करना निम्न त्रुटि देता है -
पूर्ण कीवर्ड
NULL का उपयोग कीवर्ड के रूप में भी किया जा सकता है जब NULL में शामिल मानों पर Boolean संचालन करते हैं। ऐसे उद्देश्यों के लिए NULL शब्द के साथ संयोजन में "IS / NOT" कीवर्ड का उपयोग किया जाता है। जब कीवर्ड के रूप में नल का उपयोग किया जाता है तो मूल वाक्यविन्यास निम्नानुसार होता है
`comlumn_name' IS NULL`comlumn_name' NOT NULL
यहां
- "IS NULL" वह कीवर्ड है जो बूलियन तुलना करता है। यदि आपूर्ति की गई मान पूर्ण नहीं है और आपूर्ति की गई मान पूर्ण नहीं है तो यह सही है।
- "NOT NULL" वह कीवर्ड है जो बूलियन तुलना करता है। यदि आपूर्ति की गई मान शून्य है और आपूर्ति की गई है तो यह सही है कि आपूर्ति मूल्य शून्य है।
आइए अब एक व्यावहारिक उदाहरण देखें, जो नल के मूल्यों वाले सभी स्तंभ मानों को समाप्त करने के लिए NOT NULL कीवर्ड का उपयोग करता है।
उपरोक्त उदाहरण के साथ जारी रखते हुए, मान लें कि हमें उन सदस्यों के विवरण की आवश्यकता है जिनके संपर्क नंबर शून्य नहीं है। हम जैसे क्वेरी को निष्पादित कर सकते हैं
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
उपरोक्त क्वेरी निष्पादित करने से केवल रिकॉर्ड मिलते हैं जहां संपर्क नंबर शून्य नहीं है।
मान लीजिए कि हम सदस्य रिकॉर्ड चाहते हैं जहां संपर्क नंबर शून्य है। हम निम्नलिखित क्वेरी का उपयोग कर सकते हैं
SELECT * FROM `members` WHERE contact_number IS NULL;
उपरोक्त क्वेरी निष्पादित करने से सदस्य विवरण मिलता है जिसका संपर्क नंबर NULL है
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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 |
तुलना शून्य मान s
तीन-मूल्य तर्क - उन स्थितियों पर बूलियन संचालन करना जो NULL को शामिल करते हैं, या तो "अज्ञात", "सही" या "गलत" वापस कर सकते हैं ।
उदाहरण के लिए, का उपयोग कर कीवर्ड "शून्य है" जब तुलना संचालन कर शून्य से जुड़े या तो वापस कर सकते हैं सच या गलत । अन्य तुलना संचालकों का उपयोग करके "अज्ञात" (NULL) देता है।
मान लीजिए कि आप संख्या पांच की तुलना 5 से करते हैं
SELECT 5 =5;
क्वेरी परिणाम 1 है जिसका मतलब है TRUE
5 =5 |
---|
1 |
उसी ऑपरेशन को NULL के साथ करते हैं
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
आइए एक और उदाहरण देखें
SELECT 5 > 5;
5> 5 |
---|
0 |
क्वेरी परिणाम 0 है जिसका अर्थ है FALSE
आइए NULL का उपयोग करके एक ही उदाहरण देखें
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
आइए IS NULL कीवर्ड का उपयोग करें
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
क्वेरी परिणाम 0 है जो FALSE है
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
क्वेरी परिणाम 1 है जो TRUE है
सारांश
- वैकल्पिक तालिका फ़ील्ड के लिए NULL एक मान स्थान धारक है।
- MySQL अन्य डेटा प्रकारों से NULL मान को अलग तरह से मानता है। किसी शर्त में उपयोग किए जाने पर NULL मान झूठी बूलियन मान का मूल्यांकन करता है।
- बुलियन मूल्यों के लिए परीक्षण करने के लिए NOT लॉजिकल ऑपरेशन का उपयोग किया जाता है और यदि बूलियन मान सत्य है तो बुलियन मान गलत और गलत होने पर मूल्यांकन करता है।
- परिणाम सेट से NULL मान को समाप्त करने के लिए NOT NULL खंड का उपयोग किया जाता है
- NULL मानों पर अंकगणित संचालन करना हमेशा NULL परिणाम देता है।
- तुलना संचालक जैसे [, =, आदि] का उपयोग NULL मानों की तुलना करने के लिए नहीं किया जा सकता है।