- 1 1. හැඳින්වීම: MySQL හි NULL පරීක්ෂණය වැදගත් වීමේ හේතු
- 2 2. NULL පරීක්ෂණයේ මූලික කරුණු: MySQL හි භාවිතා කළ යුතු මෙහෙයුම්
- 3 3. NULL සමඟ අනෙකුත් දත්ත වර්ග සසඳීම: සාමාන්යයෙන් නොසලකා හැරෙන කරුණු
- 4 4. ප්රායෝගික NULL සැලසුම්: සැබෑ-ලෝක විමසුම් සඳහා තාක්ෂණ
- 5 5. NULL සැලසුම් සඳහා හොඳම ක්රියාමාර්ග
- 6 6. FAQ: NULL පිළිබඳ සාමාන්ය ප්රශ්න
- 7 7. සාරාංශය: NULL පරීක්ෂණයන් නිවැරදිව භාවිත කිරීම
1. හැඳින්වීම: MySQL හි NULL පරීක්ෂණය වැදගත් වීමේ හේතු
NULL යනු කුමක්ද?
MySQL හි, NULL යනු දත්ත නොමැතිකම නියෝජනය කරයි. එය “හිස් අගයක්” හෝ “ශූන්ය” යන දෙකෙන් වෙනස් වන අතර, දත්ත ගබඩාවක අජ්ඣාත හෝ අස්ථානගත අගයක් බව පෙන්වයි. NULL යනු නොපවතින අගයක් නිසා, දත්ත ගබඩා නිර්මාණය කිරීමේදී සහ විමසුම් ලිවීමේදී විශේෂ අවධානයක් අවශ්ය වේ.
උදාහරණයක් ලෙස, ගනුදෙනුකරු දත්ත ගබඩාවක “phone_number” තීරුව NULL නම්, එය ගනුදෙනුකරු දුරකථන අංකයක් ලබා නොදුන් බව හෝ එම අගය තවම ඇතුළත් කර නොමැති බව අර්ථ දක්වයි. NULL බොහෝවිට “හිස්” බවට වැරදි ලෙස තේරුම් ගනී, නමුත් එය හිස් අක්ෂර මාලා හෝ ශූන්යයෙන් වෙනස් වූ විශේෂ අර්ථයක් ගෙන ඇත.
NULL පරීක්ෂණයේ වැදගත්කම
NULL අසත්ය ලෙස හසුරුවන්නේ නම්, දත්ත ගබඩා විමසුම් අපේක්ෂිත ලෙස ක්රියා නොකරනු ඇත. උදාහරණයක් ලෙස, NULL සඳහා නිසි පරීක්ෂාවක් නොකර සාමාන්ය සසඳන මෙහෙයුම් (උදා: =) භාවිතා කිරීම වැරදි ප්රතිඵල ලබා දිය හැක. මෙය අනපේක්ෂිත දෝෂ හෝ බග්ස් ඇති කරයි. එබැවින්, SQL හි NULL නිවැරදිව පරීක්ෂා කිරීමේ ක්රමය තේරුම් ගැනීම විශ්වාසදායක දත්ත ගබඩා මෙහෙයුම් සඳහා අත්යවශ්ය වේ.
පහත SQL ප්රකාශය සලකා බලන්න:
SELECT * FROM customers WHERE phone_number = NULL;
මෙම විමසුම අවශ්ය ප්රතිඵල ලබා නොදෙයි, මන්ද NULL සමානතාව මෙහෙයුම (=) භාවිතයෙන් සසඳා නොහැකි බැවින්. NULL අග පරීක්ෂා කිරීම සඳහා විශේෂ මෙහෙයුම් භාවිතා කළ යුතුය.
NULL හසුරුවීම නිසි ලෙස නොකළහොත් දත්ත ලබා ගැනීම පමණක් නොව, දත්ත අඛණ්ඩතාවය සහ විශ්වාසනීයත්වයත් අස්ථිර වේ. ඒ නිසා, SQL හි NULL සමඟ නිවැරදිව වැඩ කිරීම දත්ත ගබඩා කළමනාකරණයේ මූලික කොටස වේ.
2. NULL පරීක්ෂණයේ මූලික කරුණු: MySQL හි භාවිතා කළ යුතු මෙහෙයුම්
IS NULL සහ IS NOT NULL මූලික කරුණු
MySQL හි, = (සමාන) හෝ <> (සමාන නොවන) වැනි සසඳන මෙහෙයුම් භාවිතා කර NULL අග පරීක්ෂා කළ නොහැක. ඒ වෙනුවට, IS NULL සහ IS NOT NULL මෙහෙයුම් භාවිතා කළ යුතුය.
IS NULL: තීරුවේ අගයක් NULL ද යන්න පරීක්ෂා කරයි.IS NOT NULL: තීරුවේ අගයක් NULL නොවන බව පරීක්ෂා කරයි.
උදාහරණයක් ලෙස, දුරකථන අංකය NULL වන ගනුදෙනුකරුවන් සොයන්න අවශ්ය නම්, පහත පරිදි ලියන්න:
SELECT * FROM customers WHERE phone_number IS NULL;
මෙම විමසුම phone_number NULL වන සියලු ගනුදෙනුකරුවන් ලබා දෙයි. දුරකථන අංකය NULL නොවන ගනුදෙනුකරුවන් සොයන්න, පහත පරිදි භාවිතා කරන්න:
SELECT * FROM customers WHERE phone_number IS NOT NULL;
NULL අග සමඟ වැඩ කරන විට, සැමවිටම IS NULL හෝ IS NOT NULL භාවිතා කරන්න.
NULL සහ අනෙකුත් අග (හිස් අක්ෂර මාලා, ශූන්ය) අතර වෙනස
NULL, හිස් අක්ෂර මාලා ('') සහ ශූන්ය (0) එකිනෙකට සමාන පෙනුමක් දක්වන්නට හැකි වුවත්, දත්ත ගබඩාවේ ඒවායේ අර්ථය වෙනස් වේ.
- NULL : අගයක් නොපවතින බව හෝ අජ්ඣාත බව පෙන්වයි.
- හිස් අක්ෂර මාලා (
'') : දිග 0 වන අක්ෂර මාලාවක්; අගය පවතින නමුත් හිස් වේ. - ශූන්ය (
0) : සංඛ්යාත්මක අගයක්, ශූන්යය නියෝජනය කරයි.
උදාහරණයක් ලෙස:
SELECT * FROM products WHERE price = 0;
මෙම විමසුම මිල ශූන්ය වන නිෂ්පාදන සොයයි, නමුත් මිල NULL වන නිෂ්පාදන ඇතුළත් නොකරයි. NULL මිල ඇති නිෂ්පාදන ලබා ගැනීමට, පහත පරිදි භාවිතා කරන්න:
SELECT * FROM products WHERE price IS NULL;
මෙම වෙනස තේරුම් ගැනීම, NULL අග නිවැරදිව හසුරවීමට පළමු පියවරයි.
3. NULL සමඟ අනෙකුත් දත්ත වර්ග සසඳීම: සාමාන්යයෙන් නොසලකා හැරෙන කරුණු
NULL, හිස් අක්ෂර මාලා, ශූන්ය අතර වෙනස්කම්
MySQL හි NULL සමඟ වැඩ කරන විට, NULL හිස් අක්ෂර මාලා හෝ ශූන්ය සමඟ ගැලපෙන්නා ලෙස වැරදි තේරුම් ගැනීම සාමාන්යයයි. නමුත් ඒවා වෙනත් සංකල්ප වේ. NULL යනු “අගයක් නොපවතින” බව, හිස් අක්ෂර මාලා යනු “හිස් අක්ෂර මාලාවක් පවතින” බව, ශූන්ය යනු “සංඛ්යාත්මක අගය ශූන්ය” බව නියෝජනය කරයි.
- NULL : දත්ත පවතින නැත හෝ අජ්ඣාත බව පෙන්වයි.
- හිස් අක්ෂර මාලා (
'') : දිග 0 වන අක්ෂර මාලාවක් පවතින බව පෙන්වයි. - ශූන්ය (
0) : සංඛ්යාත්මක අගය ශූන්ය බව පෙන්වයි.
උදාහරණයක් ලෙස:
SELECT * FROM users WHERE name = '';
මෙම විමසුම නාමය හිස් අක්ෂර මාලාවක් වන පරිශීලකයන් ලබා දෙයි. නමුත් නාමය NULL වන පරිශීලකයන් ලබා ගැනීමට, පහත පරිදි ලියන්න:
SELECT * FROM users WHERE name IS NULL;
NULL සහ හිස් අක්ෂර මාලා වෙන වෙනම සලකන්නා යුතුය.
NULL සහ FALSE අතර වෙනස
NULL සහ FALSE දත් බොහෝවිට ගැලපෙයි, නමුත් ඒවා එකම දෙයක් නොවේ. FALSE යනු තාර්කික වැරදි අගයක් නියෝජනය කරයි, එසේම NULL යනු අගයක් නොමැති බව නියෝජනය කරයි.
උදාහරණයක්:
SELECT * FROM users WHERE is_active = FALSE;
මෙම විමසුම සක්රිය නොවන පරිශීලකයන් ලබා දෙයි. කෙසේ වෙතත්, is_active අගය NULL වන පරිශීලකයන් ප්රතිඵල වලට ඇතුළත් නොවේ. NULL අගයන්ද ඇතුළත් කිරීමට, ඔබට අතිරේක කොන්දේසියක් එක් කළ යුතුය:
SELECT * FROM users WHERE is_active IS NULL OR is_active = FALSE;
NULL සහ FALSE වෙනස් අර්ථයන් ඇති බැවින්, ඒවා SQL විමසුම් වල නිසි ලෙස සැලැස්විය යුතුය.
4. ප්රායෝගික NULL සැලසුම්: සැබෑ-ලෝක විමසුම් සඳහා තාක්ෂණ
බහු තීරුවල NULL පරීක්ෂා කිරීම
සැබෑ-ලෝක යෙදුම් වල, බහු තීරුවල NULL අගයන් තිබිය හැක. උදාහරණයක් ලෙස, ගනුදෙනුකරු කළමනාකරණ වගුවක, “phone_number” සහ “email” දෙකම NULL විය හැක. එවැනි අවස්ථාවල, ඔබට බහු තීරුවල පරීක්ෂා කිරීම අවශ්ය විය හැක.
උදාහරණයක් ලෙස, දුරකථන අංකය හෝ ඊමේල් NULL වන ගනුදෙනුකරුවන් සොයීමට:
SELECT * FROM customers
WHERE phone_number IS NULL OR email IS NULL;
මෙම විමසුම දුරකථන අංකය හෝ ඊමේල් NULL වන ගනුදෙනුකරුවන් ලබා දෙයි. කිසිදු අගයක් NULL නොවන ගනුදෙනුකරුවන් සොයා ගැනීමට, AND මෙහෙයුම්කරු භාවිතා කරන්න:
SELECT * FROM customers
WHERE phone_number IS NOT NULL AND email IS NOT NULL;
බහු තීරුවල NULL පරීක්ෂා කිරීම, ලවච්ච SQL විමසුම් ලිවීමට වැදගත් තාක්ෂණයකි.
NULL සමඟ එකතු කිරීමේ ක්රියාකාරකම් භාවිතා කිරීම
NULL අගයන් අඩංගු දත්ත එකතු කරන විට, විශේෂ සැලසුමක් අවශ්ය විය හැක, මන්ද බොහෝ එකතු කිරීමේ ක්රියාකාරකම් (උදාහරණයක් ලෙස COUNT සහ SUM) NULL අගයන් නොසලකා හරිනවා. උදාහරණයක් ලෙස, COUNT(*) NULL අගයන් ඇතුළත් සියලු පේළි ගණන කරයි, එසේම COUNT(column_name) NULL අගයන් ඉවත් කරයි.
උදාහරණයක් ලෙස, තොග ප්රමාණය NULL වන නිෂ්පාදන ඉවත් කරමින් මුළු විකුණුම් ගණනය කිරීමට:
SELECT SUM(sales_amount)
FROM products
WHERE stock_quantity IS NOT NULL;
එකතු කිරීමේ ප්රතිඵල වල NULL අගයන් ඇතුළත් කිරීමට, COALESCE ක්රියාකාරකම භාවිතා කර NULL එක විශේෂ අගයක් සමඟ ප්රතිස්ථාපනය කළ හැක. උදාහරණයක් ලෙස, NULL එක 0 ලෙස සැලකීමට:
SELECT COALESCE(SUM(sales_amount), 0)
FROM products;
කොන්දේසි තර්කයේ NULL භාවිතා කිරීම
SQL CASE ප්රකාශනය භාවිතා කර NULL අගයන් අඩංගු දත්ත සඳහා කොන්දේසි තර්කය යොදිය හැක. උදාහරණයක් ලෙස, නිෂ්පාදනයක තොගය NULL නම්, ඔබට “Unknown” ලෙස පෙන්වීමට අවශ්ය විය හැක; නැතහොත්, තොග ප්රමාණය පෙන්වන්න:
SELECT product_name,
CASE
WHEN stock_quantity IS NULL THEN 'Unknown'
ELSE stock_quantity
END AS stock_status
FROM products;
මෙම විමසුමේ, තොග ප්රමාණය NULL නම්, “Unknown” පෙන්වයි. නැතහොත්, තොග ප්රමාණය පෙන්වයි. CASE ප්රකාශනය NULL අගයන් ලවච්ච ලෙස සැලැස්වීමට ඉඩ සලසයි. 
5. NULL සැලසුම් සඳහා හොඳම ක්රියාමාර්ග
දත්ත නිර්මාණයේ NULL භාවිතය අවම කිරීම
NULL අගයන් සමඟ වැඩ කරන විට අතිමහත් සංකල්පය වන්නේ දත්ත ගබඩා නිර්මාණයේ NULL භාවිතය අවම කිරීම ය. හැකි තරම්, NULL අගයන් වලක්වා, දත්ත අඩංගු විය යුතු තීරුවල NOT NULL සීමා පත්රිකා යෙදවිය යුතුය.
උදාහරණයක් ලෙස, ගනුදෙනුකරු වගුවේ “name” හෝ “address” වැනි අත්යවශ්ය ක්ෂේත්රයන් NULL නොවීමට ලෙස නිර්මාණය කළ යුතුය. අවශ්ය තීරුවල NOT NULL සීමා පත්රිකා යෙදවන්න, සහ අගයන් අඩු විය හැකි තීරුවලට පමණක් පැහැදිලිව NULL ඉඩ දෙන්න.
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
phone_number VARCHAR(15),
email VARCHAR(100)
);
name තීරුවට NOT NULL සීමා පත්රිකාව යෙදීමෙන්, සෑම ගනුදෙනුකරුගේ රෙකෝඩ් එකකම නාමයක් අනිවාර්යයෙන් ඇතුළත් වේ.
දත්ත අඛණ්ඩතාව රැක ගැනීම
NULL ඉඩ දෙන තීරුවලටත්, සුදුසු පෙරනිමි අගයන් සකස් කිරීම වැදගත්ය. දත්ත අඛණ්ඩතාව රැක ගැනීමට, ක්ෂේත්රයන් NULL ලෙස තබා ගැනීම වෙනුවට “Not Set” හෝ “0” වැනි අර්ථවත් පෙරනිමි අගයන් භාවිතා කිරීම සලකා බලන්න.
උදාහරණයක් ලෙස, නිෂ්පාදන වගුවේ “release_date” තීරුව NULL අනුමත කරන්නේ නම්, NULL අගයන් නිසා ඇතිවන අසමතුලිතතා වැළැක්වීමට “1900-01-01” වැනි පෙරනිමි අගයක් නියම කළ හැක.
CREATE TABLE products (
product_id INT PRIMARY KEY,
product_name VARCHAR(100),
release_date DATE DEFAULT '1900-01-01'
);
NULL මත පදනම් වීම වෙනුවට අර්ථවත් පෙරනිමි අගයන් සකස් කිරීමෙන්, ඔබ සමාන්යතාවය රැකගෙන, අනාගත NULL පරීක්ෂණයන් කළමනාකරණය කිරීම පහසු කරයි.
Performance Optimization
NULL පරීක්ෂණයන්ට බරපතළව පදනම් වන විමසුම් කාර්ය සාධනයට බලපායි. විශේෂයෙන්, ඔබ බොහෝ NULL අගයන් ඇති තීරු වල IS NULL හෝ IS NOT NULL නිතර භාවිතා කරනවා නම්, සුදුසු දර්ශක (index) සුදානම වැදගත් වේ. NULL අගයන් ඉහළ ප්රතිශතයක් ඇති තීරු වල දර්ශක එකතු කිරීම සෙවීමේ කාර්යක්ෂමතාවය අඩු කරයි, එබැවින් දර්ශක සැලසුම කාරුණිකව සලකා බැලිය යුතුය.
6. FAQ: NULL පිළිබඳ සාමාන්ය ප්රශ්න
Q1: = මෙහෙයුම්කරු සමඟ NULL සංසන්දනය කිරීම දෝෂයක් ඇති කරද?
A1: නැත, එය දෝෂයක් ඇති නොකරයි, නමුත් එය අපේක්ෂා කරන පරිදි ක්රියා නොකරයි. NULL අනිශ්චිත අගයක් නිරූපණය කරන බැවින්, = හෝ <> වැනි සාමාන්ය සංසන්දන මෙහෙයුම්කරු NULL සමඟ නිවැරදිව ක්රියා නොකරයි. එබැවින් සැමවිටම IS NULL හෝ IS NOT NULL භාවිතා කරන්න.
Q2: NULL අගයන් අඩංගු දත්ත එකතු කිරීමේදී මට කෙසේ කළ හැකිද?
A2: NULL අගයන් අඩංගු දත්ත එකතු කිරීමේදී, COALESCE ක්රියාවලිය භාවිතා කර NULL එක පෙරනිමි අගයක් (උදාහරණයක් ලෙස 0) සමඟ ප්රතිස්ථාපනය කළ හැක, හෝ අවශ්ය පරිදි IS NULL කොන්දේසිය එකතු කළ හැක. මෙය NULL අගයන් පවතින අවස්ථාවලත් නිවැරදි එකතු කිරීමක් සලසයි.
Q3: දත්ත ගබඩාවක NULL අගයන් ගබඩා කිරීමේදී අවධානම් තිබේද?
A3: ඔව්. NULL දත්ත නොමැති බව නිරූපණය කරන බැවින්, එය භාවිතා කිරීමට පෙර එහි අර්ථය පැහැදිලිව අවබෝධ කරගත යුතුය. NULL අධික ලෙස භාවිතා කිරීමෙන් දත්ත විශ්ලේෂණය වඩා සංකීර්ණ වෙයි, එබැවින් එය වැළැක්විය යුතුය.
Q4: NULL අගයන් අඩංගු තීරු වල දර්ශක (index) භාවිතා කළ හැද?
A4: ඔව්, NULL අගයන් අඩංගු තීරු වල දර්ශක (index) භාවිතා කළ හැක. නමුත් තීරුවේ බොහෝ NULL ඇතුළත් නම්, දර්ශක කාර්යක්ෂමතාවය අඩු විය හැක. IS NULL හෝ IS NOT NULL සෙවීම් නිතර සිදු වන විට සුදුසු දර්ශක සැලසුම විශේෂයෙන් වැදගත් වේ.
7. සාරාංශය: NULL පරීක්ෂණයන් නිවැරදිව භාවිත කිරීම
MySQL හි NULL නිවැරදිව හසුරවීම, දත්ත ගබඩා නිරවද්ය හා කාර්යක්ෂම ලෙස ක්රියාත්මක කිරීම සඳහා අත්යවශ්ය කුසලතාවකි. NULL යනු “නොපවතින දත්ත” නිරූපණය කරයි සහ අනෙකුත් අගයන්ගෙන් වෙනස් විශේෂ අර්ථයක් ගනී. NULL නිවැරදිව පරීක්ෂා කිරීමට IS NULL සහ IS NOT NULL භාවිතා කර, දත්ත ගබඩා සැලසුම් අදියරේ සිට NULL හසුරවීම ගැන සැලකිල්ලට ගන්න.
ප්රායෝගික අවස්ථාවල, NULL අඩංගු විමසුම් සහ එකතු කිරීම් කාර්යක්ෂමව හසුරවීම සඳහා තාක්ෂණයන් අදාළ කර, දත්ත අඛණ්ඩතාවය සහ කාර්යක්ෂමතාවය රැකගත යුතුය. උදාහරණයක් ලෙස, NULL අගයන් ප්රතිස්ථාපනය කිරීමට COALESCE භාවිතා කිරීම හෝ NULL පරීක්ෂණයන් ඇතුළත් ලවච්චි විමසුම් සැලසුම් කිරීම, විශ්වාසනීයතාවය වැඩි දියුණු කරයි.
NULL නිවැරදිව හඳුනාගෙන භාවිතා කිරීමෙන්, SQL විමසුම් වල නිරවද්යතාවය සහ කාර්යක්ෂමතාවය ගණනාවක් වැඩි වේ. මෙම ලිපියේ හඳුන්වා දුන් තාක්ෂණයන් අදාළ කර, දත්ත ගබඩා මෙහෙයුම් ගැටළු අඩු කර, වඩා විශ්වාසනීය දත්ත කළමනාකරණ පද්ධතියක් ගොඩනඟන්න.


