5.1 ప్రాముఖ్యత లేకపోవడం

SQL భాష, జావా లాంగ్వేజ్ లాగా, విలువ లేకపోవడాన్ని సూచించడానికి ఒక ప్రత్యేక కీవర్డ్ ఉంది - ఇది శూన్యం. లేదా తరచుగా వ్రాసినట్లు - NULL.

SQLలో ఉపయోగం NULLజావాలో శూన్య వినియోగానికి చాలా పోలి ఉంటుంది. జావాలో, ఫీల్డ్‌లు శూన్య విలువలను కలిగి ఉన్న వస్తువులు ఉండవచ్చు. SQLలో, వరుసలు NULL విలువలను కలిగి ఉండే పట్టికలు ఉండవచ్చు.

నేను ఉద్దేశపూర్వకంగా మా ఉత్పత్తి పట్టికకు కొన్ని అన్‌బ్రాండెడ్ ఉత్పత్తులను జోడించనివ్వండి. ఉత్పత్తి యొక్క బ్రాండ్ తెలియకపోతే, విలువ NULL.

అటువంటి ఉత్పత్తులను ప్రదర్శించడానికి, రివర్స్ క్రమంలో id ద్వారా మా ఉత్పత్తి పట్టికను క్రమబద్ధీకరించండి మరియు 10 రికార్డ్‌లను తీసుకుందాం. అభ్యర్థన ఇలా కనిపిస్తుంది:

SELECT * FROM product
ORDER BY id DESC
LIMIT 10

మేము ఈ క్రింది ప్రశ్న ఫలితాన్ని పొందుతాము:

id పేరు బ్రాండ్ ధర లెక్కించండి
15 రివెట్ శూన్య 0.01 1000
14 స్క్రూ శూన్య 0.10 1000
13 నిలబడు IKEA 100.00 10
12 పూల కుండి స్మార్ట్‌ఫ్లవర్ 99.00 9
పదకొండు చేతులకుర్చీ బాష్ 44.00 8
10 ప్లేట్ బాష్ 199.00 10
9 డ్రస్సర్ IKEA 99.00 10
8 దీపం LG 15.00 100
7 టీవీ LG 350.00 4
6 షెల్ఫ్ బాష్ 25.00 114

అవును, నేను టేబుల్‌కి రివెట్‌లు మరియు స్క్రూలను జోడించాను. వాటికి ధర మరియు పరిమాణం ఉన్నాయి, కానీ బ్రాండ్ లేదు.

5.2 NULLతో పోలిక

శూన్యాన్ని ఉపయోగించినప్పుడు కొన్నిసార్లు మీరు జావాలో పిచ్చిగా ఉండేవారని మీకు గుర్తుందా? సమానం() ద్వారా శూన్య విలువలను సూచించగల వేరియబుల్స్‌ను మీరు పోల్చలేరు. ఉదాహరణ:

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

మీరు ఖాళీ పట్టికను పొందుతారు:

id పేరు బ్రాండ్ ధర లెక్కించండి

కానీ మీరు ప్రశ్నలో బ్రాండ్ సమానం కాదని వ్రాస్తే NULL, మీరు అదే ఫలితాన్ని పొందుతారు:

SELECT * FROM product
WHERE brand != NULL

మీరు మళ్లీ ఖాళీ పట్టికను పొందుతారు:

id పేరు బ్రాండ్ ధర లెక్కించండి

NULLతో ఏదైనా పోలిక/చర్య NULLని అందిస్తుంది:

వ్యక్తీకరణ ఫలితం
బ్రాండ్ = NULL శూన్య
బ్రాండ్ != NULL శూన్య
NULL = శూన్యం శూన్య
NULL != NULL శూన్య

అవును,మీరు NULLని NULLతో పోల్చినప్పటికీ, సమాధానం NULL అవుతుంది.

5.3 NULL మరియు NULL కాదు

కాబట్టి మనం కొన్ని ఫీల్డ్ (లేదా కొంత కాలమ్) విలువను కలిగి ఉందని ఎలా తనిఖీ చేయాలి NULL? మరియు దీని కోసం, SQL ప్రత్యేక వ్యక్తీకరణను కలిగి ఉంది - IS NULL. ఇది ఇలా కనిపిస్తుంది.

variable IS NULL

మీరు మీ పట్టిక యొక్క నిలువు వరుసకు సమానంగా లేకుంటే తనిఖీ చేయాలనుకుంటే NULL, మీరు వ్రాయాలి IS NOT NULL:

variable IS NOT NULL

బ్రాండ్ సమానమైన ఉత్పత్తి పట్టిక నుండి అన్ని ఉత్పత్తులను ఎంచుకునే ప్రశ్నను వ్రాద్దాం NULL. అటువంటి అభ్యర్థన ఇలా ఉంటుంది:

SELECT * FROM product
WHERE brand IS NULL

మరియు మేము ఈ క్రింది ప్రశ్న ఫలితాన్ని పొందుతాము:

id పేరు బ్రాండ్ ధర లెక్కించండి
14 స్క్రూ శూన్య 0.10 1000
15 రివెట్ శూన్య 0.01 1000

ఇప్పుడు ధర $20 కంటే తక్కువ ఉన్న అన్ని ఉత్పత్తులను ప్రదర్శిస్తాము:

SELECT * FROM product
WHERE price  < 20

మరియు మేము ఈ క్రింది ప్రశ్న ఫలితాన్ని పొందుతాము:

id పేరు బ్రాండ్ ధర లెక్కించండి
2 కుర్చీ IKEA 5.00 45
8 దీపం LG 15.00 100
14 స్క్రూ శూన్య 0.10 1000
15 రివెట్ శూన్య 0.01 1000

ఇప్పుడు మేము ధర తప్పనిసరిగా $20 కంటే తక్కువగా ఉండాలని మరియు బ్రాండ్ కాదని పేర్కొంటాము NULL.

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

మేము ఈ క్రింది ప్రశ్న ఫలితాన్ని పొందుతాము:

id పేరు బ్రాండ్ ధర లెక్కించండి
2 కుర్చీ IKEA 5.00 45
8 దీపం LG 15.00 100

బాగుంది, చివరి రెండు లైన్లు పోయాయి. ఇది ఎలా పని చేస్తుందో ఇక్కడ ఉంది. కొంచెం అసాధారణమైనది, కానీ ఇప్పటికీ ఇందులో ఒక నిర్దిష్ట తర్కం ఉంది.