MySQL မှ SQL အခြေခံများ (3)
ဒီ အပိုင်းကို လေ့လာမယ်ဆိုရင် ရှေ့ကအပိုင်းတွေကို လေ့လာထားဖို့ လိုတဲ့အတွက် ပြန်ညွှန်းလိုက်ပါတယ်။
အခုဆက်ရေးမယ့် အပိုင်းကတော့ Retrieving Database ဆိုတဲ့ အပိုင်း ဖြစ်ပါတယ်။
Database ဖိုင်အတွင်းမှာ Data များကို ဖတ်ခြင်း
Data တွေကို Entry လုပ်တယ်ဆိုတာ ပြန်ဖတ်ဖို့ပါ။ အဲဒီလိုမှ ပြန်မဖတ်နိုင်ရင် Database ဆိုတာ အလကားပါပဲ။ SELECT ဆိုတဲ့ Query ပဲ သုံးပါတယ်။
SELECT * FROM students;

SELECT * ဆိုတဲ့ နေရာမှာ * ဆိုတဲ့ အဓိပ္ပါယ်က Table ထဲမှာရှိတဲ့ Column တွေ အားလုံးထဲမှာ ရှိတဲ့ Data တွေကို ပြပါဆိုတဲ့ အဓိပါယ်ပါ။ သီးခြားစီ ရွေးပြီး ပြစေချင်တယ် ဆိုရင်တော့
SELECT student_name, email FROM students;

SELECT အတွက် မရှိမဖြစ် WHERE
ကိုယ်က Data အချက်အလက်တွေကို ရွေးချယ်တဲ့ နေရာမှာ ဒီထက်ပိုပြီး Specific ဖြစ်စေဖို့ WHERE ဆိုတဲ့ စာလုံးကို မသုံးလို့ မဖြစ်ပါဘူး။ ဒီတော့ WHERE ဆိုတာကို သုံးကြည့်ရအောင်
SELECT email FROM students WHERE student_name = "Aung Aung";

ဒီတစ်ခါတော့ WHERE နဲ့ စစ်ထားတာကြောင့် Aung Aung နဲ့ ဆိုင်တဲ့ email ကိုပဲ ပြပေးပါတော့တယ်။ Programming မှာ ဆိုရင်တော့ IF နဲ့ တူပါလိမ့်မယ်။ အခြား နှိုင်းယှဉ်တဲ့ Condition တွေကိုလည်း သုံးလို့ရပါတယ်။ ဆက်လေ့လာကြည့်ရအောင်
SELECT * FROM students WHERE student_id <=2; SELECT * FROM students WHERE date != '2009-12-12';

အဲဒီလို WERE ကို သုံးလို့ရသလို AND တို့ OR တို့နဲ့လည်း တွဲသုံးလို့ရပါတယ်။ AND ဆိုလို့ရှိရင် Condition နှစ်ခုလုံးနဲ့ တူဖို့ လိုမှာ ဖြစ်ပြီး၊ OR ဆိုရင်တော့ တစ်ခုမဟုတ် တစ်ခုနဲ့ တူဖို့ လိုမှာ ဖြစ်ပါတယ်။

WHERE ရဲ့ နောက်မှာ Value တွေကို ရွေးဖို့ပေးတဲ့နေရာမှာ (ဥပမာ – student_name = ‘Aung Aung’) လိုမျိုးဆိုရင် ‘ ‘ လေးတွေ ကြားမှာ ရေးပေးရမှာ ဖြစ်ပေမယ့် Numeric Value တွေမှာတော့ လိုမှာမဟုတ်ပါဘူး။
IN()
Multiple Values တွေကို ရွေးထုတ်တဲ့နေရာမှာ အင်မတန် အသုံးဝင်ပါတယ်။ ဥပမာ – ၁၂-၁၂-၂၀၀၉ ကနေ ၁၂-၁၂-၂၀၁ဝ အတွင်းက အချက်အလက်တွေ ပြပါဆိုတာမျိုးတွေမှာ သုံးလို့ရပါတယ်။

LIKE()
သူကတော့ Windows မှာ ဖိုင်တွေ ရှာသလိုပါပဲ။ ဘယ်စာလုံးပါတဲ့ဟာတွေ ရှာပေး စသည်ဖြင့် သုံးလို့ရပါတယ်။ ကျွန်တော်တို့ Database ထဲမှာ ဆို ရင် hostmail သုံးတာ ဘယ်သူတွေလဲ ကြည့်ချင်တာမျိုးတွေမှာ သုံးလို့ရပါတယ်။
SELECT * FROM students WHERE email LIKE '%hotmail%';

ORDER BY
ORDER BY ဆိုတဲ့ အသုံးကို ငယ်စဉ်ကြီးလိုက် ဖြစ်ဖြစ်၊ ကြီးစဉ် ငယ်လိုက် ဖြစ်ဖြစ် စီချင်တဲ့အခါမှာ သုံးပါတယ်။

ဒီနေရာမှာ မှတ်စရာ ရှိတာက ASC နဲ့ DESC ပါ။ Default Order အနေနဲ့ ASC (Ascending Order) ကို သုံးပြီး DESC(Descending Order) ပါ။
LIMIT … OFFSET …
ကိုယ်လိုချင်တဲ့ Results ကို နှစ်ခုတည်းပြပါ၊ သုံးခုပြပါ၊ နှစ်ခုကျော်က ပြပါ ဆိုတာမျိုးတွေလည်း လုပ်လို့ရပါတယ်။ အဲဒီလို လုပ်နိုင်ဖို့အတွက် LIMIT … OFFSET … ဆိုတာကို သုံးပါတယ်။

LIMIT 2 ဆိုတာ အပေါ်ဆုံးက Row နှစ်ခုကိုပဲ ပြပါလို့ ဆိုလိုပါတယ်။ LIMIT 1 OFFSET 2 ဆိုတာ ၂ ခုကျော်က ၁ ခုကို ပြပါဆို အဓိပ္ပါယ်ပါ။ ဒီတော့ အမှတ် စဉ် ၃ ကို ပြတာ သတိထားမိပါလိမ့်မယ်။ LIMIT 2, 1 ဆိုတာကတော့ OFFSET 2, LIMIT 1 ဆိုတဲ့ အဓိပ္ပါယ်ပါ။ ဒီနေရာမှာ ပြောင်းပြန်ဖြစ်သွားတာ သတိထားမိပါလိမ့်မယ်။
Data များကို ပြန်လည် ပြုပြင်ခြင်း
Data တွေကို ပေါင်းထည့်တာ၊ ပြန်ထုတ်ကြည့်တာ စသည်ဖြင့် လေ့ကျင့်ခဲ့ကြပြီးပါပြီ။ ဒီတစ်ခါတော့ Data တွေကို ပြန်ပြင်တဲ့အပိုင်းကို လေ့လာ ကြည့်ရအောင် UPDATE ဆိုတဲ့ SQL Command နဲ့ သုံးပါတယ်။

ပထမတုန်းကတော့ student_name မှာ Aung Aung ပါ၊ ဒါကို Aung Hla ဆိုပြီး ပြောင်းပါတယ်။ အဲဒီလိုပဲ aungaung(at)gmail.com ကိုလည်း aungaung(at)hotmail.com လို့ ပြောင်းလိုက်ပါတယ်။ WHERE ကတော့ မပါမဖြစ်ပါ။ Student Name မှမဟုတ်ပါဘူး။ ဘယ် Column Name ကို မဆိုညွှန်းနိုင်ပါတယ်။ WHERE မပါဘူးဆိုရင်တော့ အားလုံး ပြောင်းသွားပါလိမ့်မယ်။ UPDATE ကို LIMIT နဲ့လည်း တွဲသုံးလို့ ရပါသေးတယ်။

LIMIT 1 ဆိုတော့ အပေါ်ဆုံး တစ်ခုတည်း ပြောင်းလဲသွားတာ သတိထားမိပါလိမ့်မယ်။ ကျွန်တော်က Date တွေ တူသွားအောင် ဒုတိယ Row က Date ကို အပေါ် Row နဲ့ တူအောင် ပြောင်းလိုက်ပါတယ်။ ပြီးရင် UPDATE လုပ်ကြည့်ပါတယ်။ WHERE Condition အရ date အတွက် ကိုက်ညီတာ ၂ ခုရှိပေမယ့် LIMIT 1 ဖြစ်တာကြောင့် အပေါ်ဆုံး တစ်ကြောင်းတည်း ပြောင်းသွားပါတယ်။
Data များကို ဖျက်ခြင်း
INSERT, SELECT နဲ့ UPDATE တွေ အားလုံး ပြီးသွားပါပြီ။ ဒီတစ်ခါ ဆက်လေ့လာမယ့် အပိုင်းက DELETE ဆိုတဲ့ အပိုင်းပါ။ Data တွေ ဖျက်တဲ့ အပိုင်းပေါ့။ Table ကို ဖျက်တဲ့အပိုင်းက အပေါ်မှာ လေ့ကျင့်ခဲ့ပြီးပါပြီ။ ခု ဖျက်မှာက အထဲက Data တွေပါ မဖျက်ခင်မှာ သေသေချာချာ စဉ်းစားဖို့ တော့ လိုပါလိမ့်မယ်။
DELETE FROM students WHERE student_name = 'Goo Goo';

Data Table တဲ့ Data Row တွေ ကို WHERE နဲ့ သုံးပြီး ဖျက်ပါတယ်။ ဒါလည်း UPDATE မှာ သုံးတဲ့ WHERE နဲ့ တူတူပါပဲ။
Table ထဲက Data များ အားလုံးကို ရှင်းလင်းခြင်း
TRUNCATE ဆိုတာကို မသုံးပဲ DELETE FROM students; ဆိုရင်လည်း အားလုံး ပျက်သွားပါတယ်။ ဒါပေမယ့် TRUNCATE ကတော့ ပိုပြီး ပြည့်စုံပါတယ်။ AUTO_INCREMENT တွေအတွက် ဆိုရင် TRUNCATE နဲ့ ရှင်းထားရင် 1 က ပြန်စမှာ ဖြစ်ပေမယ့် DELETE ကတော့ အဲဒါမျိုး မရပါဘူး။ Counter ကတော့ နောက်ဆုံး Value ကနေ ဆက်သွားနေမှာပါ။

String Value တွေ ဖြစ်တဲ့ ‘ စတာတွေကို Data ထဲကို ထည့်ချင်တယ် ဆိုရင် ‘\’ ဆိုတာကို သုံးပြီး ထည့်နိုင်ပါတယ်။

O’Reilly ဆိုတာကို ထည့်ချင်တဲ့အခါ ‘ ဆိုတဲ့ Character ပါနေပါတယ်။ အဲဒီအတွက် ရှေ့မှာ \ ထည့်ပေးဖို့ လိုပါတယ်။ ဒီနေရာမှာတော့ Escape Character အတွက် သေသေချာချာ ပြင်ဆင်ဖို့ လိုပါလိမ့်မယ်။ mysql_real_escape_string() ဆိုတဲ့ function သုံးရင်သုံး၊ ဒါမှ မဟုတ် statements တွေရေးပြီး auto escape ဖြစ်အောင် လုပ်ဖို့ လိုပါတယ်။
ဒီလောက်ဆိုရင် MySQL မှ SQL အခြေခံများ ပထမအဆင့်အတွက် လုံလောက်သွားပါပြီ။
ခုပို့စ်ကို tutsplus မှ reference ယူထားပါတယ်။
Facebook comments:



[...] MySQL မှ SQL အခြေခံများ (၃) [...]