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

बढ़िया, आखिरी दो पंक्तियां चली गईं। यह ऐसे काम करता है। थोड़ा असामान्य, लेकिन फिर भी इसमें एक निश्चित तर्क है।