Saturday, August 24, 2013

SQL #03 පාඩම - Database එකකට දත්ත ඇතුළත් කිරීම - වෙනස් කිරීම - මැකීම [INSERT|UPDATE|DELETE]

මීට පෙර පළවූ පාඩම් දෙකෙන් අපි අපේ පාඩම් මාලාවට අව්‍යශ වන පරිදි පරිගණකය ලැහැස්ති කරගන්නා හැටිත් (පළමු පාඩම), ඩේටාබේස් එකක ඇති දත්ත SELECT හරහා ලබාගන්නා හැටිත් (දෙවැනි පාඩම) කතා කළා. මේ පාඩමෙන් කියාදෙන්නෙ ඩේටාබේස් එකකට දත්ත ඇතුළත් කිරීම, ඇතුළත් කර ඇති දත්ත වෙනස් කිරීම සහ ඇතුළත් කර ඇති දත්ත මකාදැමීම පිළිබඳවයි.

ඒගැන කතා කිරීමට පෙර ඔබේ PHP MyAdmin වෙත පිවිස (XAMPP හි Apache, MySQL start කර වෙබ් බ්‍රව්සරයෙන් http://localhost/phpmyadmin/ වෙත යන්න. අමතකනම් පළමු පාඩම බලන්න) TESTDB හි SQL ටැබ් එක තුළ SELECT එකක් යොදා Student ටේබල් එකේ සියලු දත්ත ගෙන බලන්න.



ඩේටාබේස් එකකට දත්ත ඇතුළත් කරමු

දත්ත ඇතුළත් කිරීමේදී භාවිතා වෙන විධානය INSERT INTO ය. මෙය අපිට දෙයාකාරයකින් භාවිතා කළ හැකියි.

පළමු ක්‍රමය, ටේබල් එකෙහි ඇති columns ගැන සඳහන් නොකර, ටේබල් එකේ නම පමණක් භාවිතාකර insert කිරීමයි. මෙහිදී ටේබල් එකේ columns තිබෙන අනුපිළිවෙලින්ම values ලබාදිය යුතුයි. මෙහි ආකෘතිය පහත පරිදිවේ.

INSERT INTO table
VALUES (value1, value2, value3, value4);

උදාහරණයක් ලෙස අපි Student ටේබල් එකට මේ ක්‍රමයට එක් රෙකෝඩ් එකක් ඇතුළත් කර බලමු.

INSERT INTO student
VALUES ('STU006', 'අමල්','වන්නිආරච්චි', 'පුරුෂ',119456123,'1988-02-27','මාතර');

Indexnumber එක Student table එකේ primary key එක නිසා ඒක අපිට duplicate කරන්න බැහැ. දැනට STU005 දක්වා ලබාදී ඇති බැවින් මෙතැනදී ඊළඟ අංකය (STU006) ලබාදී ඇත. DATE සහ TEXT ලෙස ඇති අගයයන් quotations තුළත්, NUMBERS නම් quotations රහිතවත් ලබාදිය හැකියි.

මෙම SQL statement එක ඔබේ SQL ටැබ් එක තුළ ධාවනය කළවිට Student table එකට අලුත් රෙකෝඩ් එකක් එකතුවනු ඇති. ඉන්පසුව ඔබ නැවත student ටේබල් එක SELECT කර බැලුවොත්,

select * from student;

(සියලු විධාන එක පෙළට ලීවාටද වරදක් නැත.)



දෙවැනි ක්‍රමය, ටේබල් එකෙහි ඇති columns ගැන සඳහන් කර insert කිරීමයි. මෙහිදී ටේබල් එකේ columns තිබෙන අනුපිළිවෙලින්ම values ලබාදිය යුතු නැහැ, ලබාදිය යුත්තේ අපි සඳහන් කරන අනුපිළිවෙලටයි. සියලුම columns වලට නැතිව columns කීපයකට පමණක් values insert කිරීමේදී මේ ක්‍රමය සුදුසුයි.  මෙහි ආකෘතිය පහත පරිදිවේ.


INSERT INTO table (column1, column2, column3)
VALUES (value1, value2, value3);

උදාහරණයක් ලෙස අපි සිසුවකුගේ INDEXNUMBER, GENDER සහ FIRSTNAME පමණක් ඇතුළත් කරන්නේනම්, (ටේබල් එකේ columns තියෙන පිළිවෙලට නෙවෙයි, අපි සඳහන් කරන අනු පිළිවෙලටයි),

INSERT INTO student (INDEXNUMBER, GENDER, FIRSTNAME)
VALUES ('STU007',  'පුරුෂ', 'කමල්');

මෙමගින් insert වන රෙකෝඩ් එක පහත පරිදි දිස්වනු ඇති.



අපි ඇතුළත් කළ values 3 පමණක් නිවැරදි columns වලට ඇතුළත් වී තිබෙනවා. (TELEPHONE සහ DATEOFBIRTH තුළළ ඇත්තේ අප values ලබා නොදුන් නිසා MySQL විසින් එම columns දෙකට දාගත් default values දෙකයි). පැහැදිලියි නේද?



ඩේටාබේස් එකක ඇති තොරතුරු වෙනස් කරමු

ඩේටාබේස් එකක දැනටමත් ඇතුළත් කර ඇති තොරතුරු වෙනස්කිරීමේදී භාවිතා කරන්නේ UPDATE විධානයයි. මෙහි ආකෘතිය පහත පරිදි වේ.

UPDATE table
SET column1 = value1, column2 = value2
WHERE column operator value;

උදාහරණයක් ලෙස, අපිට STU006 දරණ අනු අංකය හිමි ශිෂ්‍යයාගේ LASTNAME සහ HOMETOWN වෙනස් කිරීමට අවශ්‍යනම් එය පහත පරිදි කළ හැකියි.

UPDATE student
SET LASTNAME= 'චමින්ද', HOMETOWN = 'කෑගල්ල'
WHERE INDEXNUMBER = 'STU006';

මෙහි where clause එකෙන් අපි update වන රෙකෝඩ් එක INDEXNUMBER එක STU006 ඇති සිසුවාට පමණක් සීමා කරනවා. (නැත්නම් සියලු රෙකෝඩ් අප්ඩේට් වේවි!).

මෙම විධානය SQL ටැබ් එකේ ධාවනය කළහොත්, STU006 ශිෂ්‍යයාගේ තොරතුරු UPDATE වනු ඇති.


පැහැදිලියි නේද?



ඩේටාබේස් එකක ඇති තොරතුරු මකා දමමු

ඩේටාබේස් එකක ඇති තොරතුරු මකා දැමීම සඳහා භාවිතා කරන්නේ DELETE විධානයයි. මෙහි ආකෘතිය පහත පරිදි වේ.

DELETE FROM table
WHERE column operator value;

උදාහරණයක් ලෙස, Student ටේබල් එකෙහි INDEXNUMBER එක STU007 වන සිසුවාගේ තොරතුරු මකා දැමිය යුතුනම්, පහත පරිදි එය සිදුකරගත හැකියි.

DELETE FROM student
WHERE INDEXNUMBER = 'STU007';

මෙහි where clause එකෙන් අපි delete වන රෙකෝඩ් එක INDEXNUMBER එක STU007 ඇති සිසුවාට පමණක් සීමා කරනවා. (නැත්නම් සියලුම දත්ත DELETE වේවි!).

මෙම විධානය SQL ටැබ් එකේ ධාවනය කළහොත්, STU007 ශිෂ්‍යයාගේ තොරතුරු DELETE වනු ඇති.


පැහැදිලිද?

ඉහත කී Update සහ Delete Statement වල WHERE clause එක ඔබට අවශ්‍ය වන රෙකෝඩ් එක හරිහැටි තෝරා බේරා ගැනීම සඳහා අපි දෙවැනි පාඩමේ ඉගෙනගත් AND,OR වැනි පදත් භාවිතා කළ හැකියි. ඒ කොන්දේසී කීපයක් බැලීමට අවශ්‍ය අවස්ථාවකදී. මේ උදාහරණ වල මම බැලුවේ එක් කොන්දේසියක් (INDEXNUMBER) පමණයි.

ඊළඟ පාඩමේදී අපි තවත් අලුත් කරුණු කීපයක් ගැන ඉගෙනගනිමු. එහිදී STUDENT ටේබල් එක වගේම අනෙක් SUBJECT, MARKS ටේබල්ස් දෙකත් භාවිතා කරන්න පුලුවන් වේවි.

මේ දක්වා ඉගෙනගත් දේවල් වලින් ප්‍රශ්නයක් ඇත්නම්, කමෙන්ට් එකකින් අහන්න.