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 |
బాగుంది, చివరి రెండు లైన్లు పోయాయి. ఇది ఎలా పని చేస్తుందో ఇక్కడ ఉంది. కొంచెం అసాధారణమైనది, కానీ ఇప్పటికీ ఇందులో ఒక నిర్దిష్ట తర్కం ఉంది.
GO TO FULL VERSION