5.1 महत्व की कमी
एसक्यूएल भाषा, जावा भाषा की तरह, एक मूल्य की अनुपस्थिति को दर्शाने के लिए एक विशेष कीवर्ड है - यह शून्य है। या जैसा कि प्राय: लिखा जाता है - NULL
.
SQL में उपयोग NULL
जावा में अशक्त के उपयोग के समान है। जावा में, ऐसी वस्तुएँ हो सकती हैं जिनके फ़ील्ड में शून्य मान हों। SQL में, ऐसी तालिकाएँ हो सकती हैं जिनकी पंक्तियों में NULL मान होते हैं।
मुझे अपनी उत्पाद तालिका में उद्देश्य से कुछ अनब्रांडेड उत्पादों को जोड़ने दें। यदि उत्पाद का ब्रांड अज्ञात है, तो मूल्य होगा NULL
।
ऐसे उत्पादों को प्रदर्शित करने के लिए, हम अपनी उत्पाद तालिका को आईडी द्वारा उल्टे क्रम में क्रमबद्ध करते हैं और 10 रिकॉर्ड लेते हैं। अनुरोध इस तरह दिखेगा:
SELECT * FROM product
ORDER BY id DESC
LIMIT 10
हमें निम्नलिखित क्वेरी परिणाम मिलते हैं:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|---|---|---|---|
15 | कीलक | व्यर्थ | 0.01 | 1000 |
14 | पेंच | व्यर्थ | 0.10 | 1000 |
13 | खड़ा होना | Ikea | 100.00 | 10 |
12 | फूलदान | स्मार्टफ्लॉवर | 99.00 | 9 |
ग्यारह | बंहदार कुरसी | BOSCH | 44.00 | 8 |
10 | तश्तरी | BOSCH | 199.00 | 10 |
9 | ड्रेसर | Ikea | 99.00 | 10 |
8 | चिराग | एलजी | 15.00 | 100 |
7 | टीवी | एलजी | 350.00 | 4 |
6 | दराज | BOSCH | 25.00 | 114 |
हां, मैंने टेबल पर रिवेट्स और स्क्रू जोड़े। उनके पास कीमत और मात्रा है, लेकिन कोई ब्रांड नहीं है।
5.2 शून्य के साथ तुलना
क्या आपको याद है कि कभी-कभी आप जावा में शून्य का उपयोग करते समय पागल हो जाते थे? कि आप उन चरों की तुलना नहीं कर सकते हैं जो बराबर () के माध्यम से अशक्त मूल्यों को संदर्भित कर सकते हैं। उदाहरण:
Product product1 = new Product();
Product product2 = null;
if (product2.equals(product1) { //an exception will be raised here
…
}
आपको विश्वास नहीं होगा, लेकिन SQL भाषा में आप NULL मानों के साथ काम करते समय बारीकियों का भी इंतजार कर रहे हैं। और ऐसा कुछ लगता है:कुछ भी शून्य नहीं है.
यदि आप उन सभी उत्पादों को फ़िल्टर करने का प्रयास करते हैं जिनका ब्रांड है null
:
SELECT * FROM product
WHERE brand = NULL
आपको एक खाली टेबल मिलेगी:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|
लेकिन अगर आप क्वेरी में लिखते हैं कि ब्रांड के बराबर नहीं है NULL
, तो आपको वही परिणाम मिलेगा:
SELECT * FROM product
WHERE brand != NULL
आपको फिर से एक खाली टेबल मिलेगी:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|
NULL के साथ कोई तुलना/कार्रवाई NULL लौटाएगा:
अभिव्यक्ति | परिणाम |
---|---|
ब्रांड = न्यूल | व्यर्थ |
ब्रांड! = न्यूल | व्यर्थ |
न्यूल = न्यूल | व्यर्थ |
न्यूल! = न्यूल | व्यर्थ |
हाँ,भले ही आप NULL की तुलना NULL से करें, तो भी उत्तर NULL ही होगा.
5.3 शून्य है और पूर्ण नहीं है
तो हम कैसे जांचते हैं कि कुछ फ़ील्ड (या कुछ कॉलम) का मान है NULL
? और इसके लिए SQL का एक विशेष एक्सप्रेशन है - IS NULL
. यह इस तरह दिख रहा है।
variable IS NULL
यदि आप यह जांचना चाहते हैं कि क्या आपकी तालिका का कोई स्तंभ के बराबर नहीं है NULL
, तो आपको लिखने की आवश्यकता है IS NOT NULL
:
variable IS NOT NULL
आइए एक प्रश्न लिखें जो उत्पाद तालिका से सभी उत्पादों का चयन करेगा जिसका ब्रांड के बराबर है NULL
। ऐसा अनुरोध इस तरह दिखेगा:
SELECT * FROM product
WHERE brand IS NULL
और हमें निम्न क्वेरी परिणाम मिलता है:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|---|---|---|---|
14 | पेंच | व्यर्थ | 0.10 | 1000 |
15 | कीलक | व्यर्थ | 0.01 | 1000 |
अब उन सभी उत्पादों को प्रदर्शित करते हैं जिनकी कीमत $20 से कम है:
SELECT * FROM product
WHERE price < 20
और हमें निम्न क्वेरी परिणाम मिलता है:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|---|---|---|---|
2 | कुर्सी | Ikea | 5.00 | 45 |
8 | चिराग | एलजी | 15.00 | 100 |
14 | पेंच | व्यर्थ | 0.10 | 1000 |
15 | कीलक | व्यर्थ | 0.01 | 1000 |
अब हम निर्दिष्ट करते हैं कि कीमत $20 से कम होनी चाहिए और ब्रांड नहीं है NULL
।
SELECT * FROM product
WHERE price < 20 AND brand IS NOT NULL
हमें निम्नलिखित क्वेरी परिणाम मिलते हैं:
पहचान | नाम | ब्रैंड | कीमत | गिनती करना |
---|---|---|---|---|
2 | कुर्सी | Ikea | 5.00 | 45 |
8 | चिराग | एलजी | 15.00 | 100 |
बढ़िया, आखिरी दो पंक्तियां चली गईं। यह ऐसे काम करता है। थोड़ा असामान्य, लेकिन फिर भी इसमें एक निश्चित तर्क है।