5.1 महत्त्वाचा अभाव

जावा भाषेप्रमाणे SQL भाषेत मूल्य नसणे दर्शविण्यासाठी एक विशेष कीवर्ड आहे - तो शून्य आहे. किंवा जसे अनेकदा लिहिले जाते - NULL.

SQL मधील वापर NULLJava मधील null च्या वापरासारखाच आहे. Java मध्ये, अशा वस्तू असू शकतात ज्यांच्या फील्डमध्ये शून्य मूल्ये आहेत. SQL मध्ये, अशी सारणी असू शकतात ज्यांच्या पंक्तींमध्ये NULL मूल्ये आहेत.

मला हेतुपुरस्सर आमच्या उत्पादन सारणीमध्ये काही अनब्रँडेड उत्पादने जोडू द्या. उत्पादनाचा ब्रँड अज्ञात असल्यास, मूल्य असेल NULL.

अशी उत्पादने प्रदर्शित करण्यासाठी, आयडीनुसार उलट क्रमाने आमच्या उत्पादन सारणीची क्रमवारी लावू आणि 10 रेकॉर्ड घेऊ. विनंती असे दिसेल:

SELECT * FROM product
ORDER BY id DESC
LIMIT 10

आम्हाला खालील क्वेरी परिणाम मिळतात:

आयडी नाव ब्रँड किंमत मोजणे
१५ रिव्हेट निरर्थक ०.०१ 1000
14 स्क्रू निरर्थक ०.१० 1000
13 उभे राहा IKEA १००.०० 10
१२ फुलदाणी स्मार्टफ्लॉवर ९९.००
अकरा आर्मचेअर बॉश ४४.०० 8
10 प्लेट बॉश १९९.०० 10
ड्रेसर IKEA ९९.०० 10
8 दिवा एलजी १५.०० 100
टीव्ही एलजी 350.00 4
6 शेल्फ बॉश २५.०० 114

होय, मी टेबलवर rivets आणि screws जोडले. त्यांच्याकडे किंमत आणि प्रमाण आहे, परंतु ब्रँड नाही.

5.2 NULL सह तुलना

कधी कधी null वापरताना तुम्हाला Java मध्ये वेड लागायचे हे आठवते का? आपण व्हेरिएबल्सची तुलना करू शकत नाही जे equals() द्वारे शून्य मूल्यांचा संदर्भ घेऊ शकतात. उदाहरण:

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 = 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 स्क्रू निरर्थक ०.१० 1000
१५ रिव्हेट निरर्थक ०.०१ 1000

आता सर्व उत्पादने प्रदर्शित करू ज्यांची किंमत $20 पेक्षा कमी आहे:

SELECT * FROM product
WHERE price  < 20

आणि आम्हाला खालील क्वेरी परिणाम मिळतात:

आयडी नाव ब्रँड किंमत मोजणे
2 खुर्ची IKEA ५.०० ४५
8 दिवा एलजी १५.०० 100
14 स्क्रू निरर्थक ०.१० 1000
१५ रिव्हेट निरर्थक ०.०१ 1000

आता आम्ही निर्दिष्ट करतो की किंमत $20 पेक्षा कमी असणे आवश्यक आहे आणि ब्रँड नाही NULL.

SELECT * FROM product
WHERE price  < 20 AND brand IS NOT NULL

आम्हाला खालील क्वेरी परिणाम मिळतात:

आयडी नाव ब्रँड किंमत मोजणे
2 खुर्ची IKEA ५.०० ४५
8 दिवा एलजी १५.०० 100

छान, शेवटच्या दोन ओळी गेल्या. ते कसे कार्य करते ते येथे आहे. थोडेसे असामान्य, परंतु तरीही यात एक विशिष्ट तर्क आहे.