Relational Database တွေကိုစီမံခန့်ခွဲဖို့အတွက် SQL, Structure Query Language ဆိုတဲ့ programming language ကိုအသုံးပြုပါတယ်။ Database ထဲမှာရှိတဲ့ data တွေကို ထုတ်ယူ၊သိမ်းဆည်း၊ပြုပြင်၊ရှင်းလင်းတာတွေကိုလုပ်နိုင်ဖို့အတွက် DBMS ကိုအသုံးပြုပါတယ်။ DBMS ကို SQL commands တွေပေးလိုက်ခြင်းဖြင့်လိုသလို စီမံနိုင်သွားမှာဖြစ်ပါတယ်။ အရှေ့မှာတုန်းက DBMS ဆိုတာဟာ user နဲ့ database ကြားထဲက software တစ်ခုဆိုပြီးရေးသားခဲ့ပါတယ်။
ထိုနည်းလည်းကောင်းပဲ SQL ဆိုတာက DBMS နဲ့ user ကြားထဲကအရာတစ်ခုပါပဲ။ SQL ဆိုတာကလည်း commands လေးတွေပါပဲ။ ဥပမာ Student table ထဲကအသက်၂၀ကျော်တဲ့ data တွေကိုဆွဲထုတ်ပေးပါ။ Student table ထဲကအသက်၃၀ကျော်တဲ့ data တွေကိုဖျက်ပေးပါ၊ စသည်ဖြင့်။
အမှန်တစ်ကယ် SQL syntax ကဒီလိုတော့မဟုတ်ဘူးပေါ့။ နောက်ပိုင်းမှာပါလာပါမယ်။ User ကပြုလုပ်ချင်တဲ့ data စီမံခန့်ခွဲမှုတွေကို SQL အသွင်ပြောင်းလဲပြီးတော့ DBMS ကိုပေးလိုက်တယ်၊ DMBS ကနေတစ်ဆင့် data တွေကိုပြင်ဆင်ပြောင်းလဲမှုတွေလုပ်ဆောင်နိုင်ပါတယ်။
Relational Database ထဲက data တွေကိုစီမံခန့်ခွဲဖို့အတွက် DBMS ကိုပေးလိုက်တဲ့ commands တွေကို SQL လို့ခေါ်ပါတယ်။ Query တွေကိုအသုံးပြုပြီးတော့ data တွေကိုလိုအပ်သလို filter, sorting, calculation တွေလုပ်ပီး ဆွဲထုတ်နိုင်တဲ့အပြင် data အသစ်သိမ်းဆည်းခြင်း၊ ရှိပြီးသား data တွေကိုပြုပြင်ခြင်း၊ ဖယ်ရှားခြင်းတို့ကိုလည်းလုပ်ဆောင်နိုင်ပါတယ်။ Data ဆွဲထုတ်တဲ့နေရာမှာ Table တစ်လုံးထဲကနေလည်းဆွဲထုတ်တာလည်းရှိသလို တစ်ခုထက်ပိုတဲ့ Tables တွေကိုချိတ်ဆက်ပြီးတော့လည်းထုတ်နိုင်ပါတယ်။
DBMS software ပေါ်မူတည်ပြီးတော့ SQL Standard ကလည်းအနည်းငယ်ကွဲပြားသွားနိုင်တာကို ဒီနေရာမှာထည့်သွင်းရေးသားချင်ပါတယ်။ ဘာသာစကားတစ်ခုတောင်မှ နေရာဒေသပေါ်မူတည်ပြီး ခေါ်ဆိုပုံတွေ၊ လေယူလေသိမ်းတွေကွဲပြားသွားသလိုပဲ SQL မှာလည်း DBMS software ကိုလိုက်ပြီးတော့ syntax ရေးနည်း၊ရေးဟန်တွေအနည်းငယ်ကွဲပြားတာမျိုးရှိတတ်ပါတယ်။ SQL Dialect လို့လည်းခေါ်နိုင်ပါတယ်။ DBMS software ဆိုတာကတော့ company တွေကထုတ်တာတွေပေါ့ဗျာ။ ဥပမာ
- MySQL
- Oracle
- Microsoft SQL Server
- PostgreSQL စသည်ဖြင့်ပေါ့။
လက်တွေ့ဥပမာလေးတစ်ခုနဲ့ပြရရင် student table ထဲက hlaing ဆိုတဲ့နာမည်ရှိတဲ့ကျောင်းသားကိုဆွဲထုတ်ချင်တယ်ဆိုပါစို့ MySQL မှာဆိုရင်
SELECT * FROM students WHERE name = 'hlaing'
hlaing ဆိုတဲ့နာမည်ကို single quote ခံလည်းရသလို "hlaing" ဆိုပြီး double quote နဲ့လည်းဆွဲလို့ရပါတယ်။ သို့ပေမယ့် PostgreSQL မှာတော့ single quote ပဲအသုံးပြုနိုင်မယ်။ ဒါမျိုးအနည်းငယ်ကွဲပြားမှုလေးတွေရှိနိုင်ပါတယ်။ နောက်ပြီး function နာမည်အချို့ပေါ့၊ အလုပ်လုပ်ပုံတူပေမယ့် naming လေးတွေကွဲပြားနိုင်ပါတယ်။
Programming တစ်ခုခုရထားပြီးသားဆိုရင်တော့ naming conventions ကိုမစိမ်းလောက်ဘူးထင်ပါတယ်။ SQL မှာလည်း query တွေရေးတဲ့အချိန်သတ်မှတ်လိုက်တဲ့ naming words တွေနဲ့ပတ်သတ်ပြီးလိုက်နာသင့်တဲ့ scheme လေးတွေရှိပါတယ်။ နောက်ပိုင်း query ရေးရင်တော့ပိုသိလာမှာဆိုတော့ ဒီအပိုင်းမှာအကြမ်းဖျင်းပဲရေးလိုက်ပါမယ်။
- နားလည်ရလွယ်ကူမယ့် naming ပေးရန်။
- Reserve keyword တွေဖြစ်တဲ့ SELECT, INSERT, UPDATE စတဲ့ keyword တွေကိုရှောင်ရှားရန်။
- Naming ပေးတဲ့အခါ space နဲ့ special characters တွေကိုရှောင်ရှားရန်။
- လိုအပ်ပါက space အစား underscore သို့ Camel Case အသုံးပြုရန်။
- ကိုယ်သုံးတဲ့ casing ကို consistent ဖြစ်အောင်သုံးရန်။
- တစ်နေရာမှာ underscore, တစ်နေရာမှာ camel case, နောက်တစ်နေရာမှာ snake case ဆိုရင် readability ညံ့စေတဲ့အပြင် query ကိုရှုပ်ထွေးစေပါတယ်။
အရှေ့အပိုင်းမှာ Table, Row, Column ကို intro ဝင်ခဲ့ပါတယ်။ အခုထပ်ပီးရှင်းလင်းပေးသွားပါမယ်။
SQL မှာ data တွေသိမ်းဆည်းဖို့အတွက် table format ကိုအသုံးပြုပါတယ်။ Table တစ်ခုမှာ rows နဲ့ columns တွေပါဝင်ပါတယ်။ row တစ်ကြောင်းခြင်းဆီတိုင်းကို record တစ်ခုအဖြစ်သတ်မှတ်လို့ရနိုင်ပြီး column ဆိုတာကတော့ record ထဲမှာရှိတဲ့ data attribute/field ကိုဆိုလိုခြင်းဖြစ်ပါတယ်။ Table format နဲ့သိမ်းဆည်းခြင်းအားဖြင့် data တွေကိုစီမံရတာပိုမိုလွယ်ကူစေပါတယ်။ CREATE TABLE ဆိုတဲ့ SQL keyword ကိုအသုံးပြုပြီးတော့ Table တည်ဆောက်နိုင်ပါတယ်။
Row ဆိုတာ record ပါပဲ။ table တစ်ခုထဲမှာရှိတဲ့ rows တိုင်းဟာ record instance တစ်ခုခြင်းဆီအဖြစ်ကိုယ်စားပြုပါတယ်။ row တစ်ခုမှာလည်း column လို့ခေါ်တဲ့ သက်ဆိုင်ရာ attribute တွေပါဝင်ပါတယ်။ INSERT, UPDATE, DELETE ဆိုတဲ့ keyword တွေကိုအသုံးပြုပြီး row တွေကို သိမ်းဆည်း၊ ပြုပြင်၊ ဖယ်ရှားနိုင်ပါတယ်။
Row ထဲမှာရှိတဲ့ attribute/field ဖြစ်ပါတယ်။ field တစ်ခုခြင်းဆီတိုင်းဟာသိမ်းဆည်းတဲ့ data ပေါ်မူတည်ပြီးတော့ data type တွေလည်းကွဲပြားနိုင်ပါတယ်။ ဥပမာနာမည်ဆို text, အသက်ဆို integer, ရက်ဆို date စသည်ဖြင့်။
ID Name Age 1 John 18 2 Sarah 17 3 David 16 ဥပမာ Table တစ်ခုပါ။ 1,2,3 ဆိုတဲ့ row ၃ခုရှိပြီးတော့ row တစ်ခုခြင်းဆီတိုင်းမှာ ID, Name, Age ဆိုတဲ့ column တွေပါဝင်ပါတယ်။ row, column အားလုံးပါဝင်တဲ့ဒီတစ်ခုလုံးကိုတော့ table ဆိုပြီးခြုံငုံသတ်မှတ်နိုင်ပါတယ်။