5.1 முக்கியத்துவமின்மை

SQL மொழி, ஜாவா மொழியைப் போலவே, மதிப்பு இல்லாததைக் குறிக்க ஒரு சிறப்புச் சொல் உள்ளது - அது பூஜ்யமானது. அல்லது அடிக்கடி எழுதப்படுவது போல் - 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 நிற்க ஐ.கே.இ.ஏ 100.00 10
12 பூந்தொட்டி ஸ்மார்ட்ஃப்ளவர் 99.00 9
பதினொரு நாற்காலி போஷ் 44.00 8
10 தட்டு போஷ் 199.00 10
9 டிரஸ்ஸர் ஐ.கே.இ.ஏ 99.00 10
8 விளக்கு எல்ஜி 15.00 100
7 டி.வி எல்ஜி 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 இல்லை.

பிராண்டின் அனைத்து தயாரிப்புகளையும் வடிகட்ட முயற்சித்தால் 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 மற்றும் NULL அல்ல

சில புலங்களில் (அல்லது சில நெடுவரிசைகள்) மதிப்பு உள்ளதா என்பதை எவ்வாறு சரிபார்க்கலாம் 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 நாற்காலி ஐ.கே.இ.ஏ 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 நாற்காலி ஐ.கே.இ.ஏ 5.00 45
8 விளக்கு எல்ஜி 15.00 100

அருமை, கடைசி இரண்டு வரிகள் போய்விட்டன. இது எவ்வாறு செயல்படுகிறது என்பது இங்கே. கொஞ்சம் அசாதாரணமானது, ஆனால் இன்னும் இதில் ஒரு குறிப்பிட்ட தர்க்கம் உள்ளது.