SQL: Basic Types
အခြေခံ Data အမျိုးအစားများ
Section titled “အခြေခံ Data အမျိုးအစားများ”SQL မှာ data တွေကို သိမ်းဆည်းတဲ့အခါ column တစ်ခုချင်းစီအတွက် သင့်တော်တဲ့ data အမျိုးအစားကို သတ်မှတ်ပေးဖို့လိုပါတယ်။ မှန်ကန်တဲ့အမျိုးအစားကို ရွေးချယ်ခြင်းက data တိကျမှန်ကန်မှုနှင့် storage အသုံးပြုမှုကို ကောင်းမွန်စေပါတယ်။
Character Types: char နှင့် varchar
Section titled “Character Types: char နှင့် varchar”char နှင့် varchar ကြားက အဓိကကွာခြားချက်ကတော့ storage နေရာကို ဘယ်လိုအသုံးပြုလဲဆိုတာပဲ ဖြစ်ပါတယ်။
char(n) - Fixed-Length
Section titled “char(n) - Fixed-Length”char က သင်သိမ်းဆည်းမယ့်စာလုံးအရေအတွက် ဘယ်လောက်ပဲဖြစ်ဖြစ် သင်သတ်မှတ်ထားတဲ့ length(n) အရေအတွက်အတိုင်း နေရာကို အပြည့်အဝ ကြိုတင်ယူထားပေးပါတယ်။ သင်ထည့်လိုက်တဲ့ data ရဲ့ length က သတ်မှတ်ထားတဲ့ length (n) ထက်နည်းနေရင်တောင် ကျန်တဲ့နေရာတွေကို space တွေဖြင့် အလိုအလျောက် ဖြည့်ထားလိုက်ပါတယ်။
ဘယ်အချိန်မှာ သုံးမလဲ - data တိုင်းရဲ့ length က အမြဲတမ်းတူညီပြီး တိကျတဲ့အခါမျိုးမှာ သုံးပါတယ်။
ဥပမာ - နိုင်ငံကုဒ်အတွက် country_code char(2) လို့ သတ်မှတ်တာမျိုးပါ။ အဲမှာဆိုရင် တန်ဖိုးတွေက အမြဲတမ်း စာလုံးနှစ်လုံး (‘US’, ‘MY’, ‘SG’) ပဲ ဖြစ်မှာမို့လို့ပါ။
varchar(n) - Variable-Length
Section titled “varchar(n) - Variable-Length”varchar ကတော့ သင်သိမ်းဆည်းလိုက်တဲ့ data ရဲ့ အမှန်တကယ်လိုအပ်တဲ့ နေရာကိုပဲ အသုံးပြုပါတယ်။ အများဆုံး length (n) အထိ လက်ခံနိုင်ပြီး data ရဲ့ length က သတ်မှတ်ထားတာထက်နည်းနေရင် နေရာအားလုံးကို အသုံးမပြုတဲ့အတွက် storage ကို ချွေတာပေးပါတယ်။
ဘယ်အချိန်မှာ သုံးမလဲ - length အမျိုးမျိုးရှိနိုင်တဲ့ data တွေအတွက် သုံးပါတယ်။ စာသား (text) တွေအတွက် အသုံးအများဆုံး ရွေးချယ်မှုဖြစ်ပါတယ်။
ဥပမာ - လူနာမည်အတွက် full_name varchar(100) လို့ သတ်မှတ်တာမျိုးပါ။ နာမည်တွေက တိုနိုင်သလို ရှည်လည်းရှည်နိုင်တဲ့အတွက် varchar က နေရာမဖြုန်းတီးဘဲ ထိထိရောက်ရောက် ကိုင်တွယ်ပေးနိုင်ပါတယ်။
Integer Types: int နှင့် smallint
Section titled “Integer Types: int နှင့် smallint”သင်သိမ်းဆည်းဖို့လိုအပ်တဲ့ ကိန်းဂဏန်းရဲ့ ပမာဏပေါ်မှာ မူတည်ပြီး ရွေးချယ်နိုင်ပါတယ်။
int သို့မဟုတ် integer
Section titled “int သို့မဟုတ် integer”int က ကိန်းပြည့် (whole number) တွေအတွက် standard အဖြစ် အသုံးအများဆုံး အမျိုးအစားဖြစ်ပါတယ်။ ပုံမှန်အားဖြင့် 4 bytes storage ကို အသုံးပြုပြီး -2.1 ဘီလီယံ
ကနေ +2.1 ဘီလီယံ
အထိ သိမ်းဆည်းနိုင်ပါတယ်။
ဘယ်အချိန်မှာ သုံးမလဲ - Primary Key ID တွေ၊ အရေအတွက်တွေလို ကိန်းပြည့်အတွက်ဆိုရင် int က အသင့်တော်ဆုံးရွေးချယ်မှုဖြစ်ပါတယ်။
smallint
Section titled “smallint”smallint က int ထက် storage ပိုနည်းတဲ့ (ပုံမှန်အားဖြင့် 2 bytes) version ဖြစ်ပါတယ်။ -32,768
ကနေ 32,767
အထိပဲ သိမ်းဆည်းနိုင်ပါတယ်။
ဘယ်အချိန်မှာ သုံးမလဲ - သင်သိမ်းမယ့်ကိန်းဂဏန်းတွေက ဒီကန့်သတ်ချက်(range) ကို ကျော်လွန်မှာမဟုတ်ဘူးလို့ လုံးဝသေချာမှသာ ရွေးချယ်သင့်ပါတယ်။
ဥပမာ - စာအုပ်တစ်အုပ်ရဲ့ စာမျက်နှာအရေအတွက် ဒါမှမဟုတ် လူတစ်ယောက်ရဲ့အသက် စတဲ့ data တွေအတွက် ရွေးချယ်နိုင်ပါတယ်။ table အရမ်းကြီးမားလာတဲ့အခါ (ဥပမာ- row သန်းပေါင်းများစွာ) smallint ကို သုံးခြင်းက storage ပမာဏကို သိသိသာသာ သက်သာစေနိုင်ပါတယ်။
Exact Numeric Type: numeric(p, d)
Section titled “Exact Numeric Type: numeric(p, d)”ဒီအမျိုးအစားnumeric(p, d) ဟာ data တိကျမှုကို အာမခံပေးနိုင်ပါတယ်။ အထူးသဖြင့် ဒသမကိန်းဂဏန်းတွေကို အနီးစပ်ဆုံးတန်ဖိုးသို့ ပြောင်းလဲခြင်း (rounding) ကြောင့် ဖြစ်ပေါ်နိုင်တဲ့ ကွာခြားမှုအနည်းငယ် (rounding errors) ကို လက်မခံနိုင်တဲ့ data အတွက် အထူးသင့်တော်ပါသည်။
numeric(p, d) သို့မဟုတ် decimal(p, d)
Section titled “numeric(p, d) သို့မဟုတ် decimal(p, d)”ဒါက fixed-point number အမျိုးအစားဖြစ်ပါတယ်။
-
p (precision): ကိန်းဂဏန်းတစ်ခုလုံးမှာ ပါဝင်နိုင်တဲ့ စုစုပေါင်း ဂဏန်းအရေအတွက်။ (ဒသမ အပါအဝင် စုစုပေါင်း ဂဏန်းဘယ်နှစ်လုံးအထိ လက်ခံမလဲ။)
-
d (scale): စုစုပေါင်းအရေအတွက်ထဲကမှ ဒသမနောက်မှာရှိမယ့် ဂဏန်းအရေအတွက်။
ဘယ်အချိန်မှာ သုံးမလဲ - ပိုက်ဆံ ဒါမှမဟုတ် တိကျတဲ့ တွက်ချက်မှုတွေအတွက် အသုံးပြုပါတယ်။
ဥပမာ - price column ကို numeric(8, 2) လို့ သတ်မှတ်ထားရင် 999999.99 အထိ တန်ဖိုးတွေကို သိမ်းဆည်းနိုင်ပါတယ်။ numeric(8, 2) ဆိုတာက စုစုပေါင်း ဂဏန်း ၈ လုံးရှိပြီး အဲဒီထဲက ၂ လုံးက ဒသမအနောက်က တန်ဖိုးဖြစ်ပါတယ်။
Approximate Numeric Types: real, double precision, float
Section titled “Approximate Numeric Types: real, double precision, float”ဒီအမျိုးအစားတွေက floating-point ကိန်းဂဏန်းတွေကို ကိုယ်စားပြုဖို့အသုံးပြုပါတယ်။ အလွန်ကြီးမားတဲ့ ဒါမှမဟုတ် အလွန်သေးငယ်တဲ့ တန်ဖိုးများကိုကိုယ်စားပြုနိုင်ပေမယ့် ကွန်ပျူတာရဲ့ သိမ်းဆည်းပုံနည်းလမ်းကြောင့် တိကျမှု မရှိနိုင်တဲ့အတွက် လုံးဝတိကျမှု (exact value) ကိုလိုအပ်တဲ့ data တွေမှာ မသုံးသင့်ပါဘူး။
real(single) နှင့် double precision
Section titled “real(single) နှင့် double precision”real နှင့် double precision နှစ်ခုလုံးက floating-point data အမျိုးအစားတွေဖြစ်ပြီးတော့
double precision (ပုံမှန်အားဖြင့် 8 bytes) က real precision (ပုံမှန်အားဖြင့် 4 bytes) ထက်ပိုတိကျမှုရှိပြီး storage ကိုလည်း ပိုသုံးပါတယ်။
ဘယ်အချိန်မှာ သုံးမလဲ - သိပ္ပံနည်းကျ တိုင်းတာမှုတွေ၊ statistical data တွေအတွက် သုံးနိုင်ပါတယ်။
float(n)
Section titled “float(n)”float က ကိုယ်လိုချင်တဲ့ precision ကိုသတ်မှတ်နိုင်ပြီး database က ကိုယ်သတ်မှတ်ထားတဲ့ precision (n) အပေါ်မူတည်ပြီး real ဒါမှမဟုတ် double precision ကို အလိုအလျောက် ရွေးချယ်ပေးပါလိမ့်မယ်။
Database system ပေါ်မူတည်ပြီး ကွဲပြားနိုင်ပေမယ့် SQL standard ကတော့ ယေဘူယျအားဖြင့် အောက်ပါအတိုင်းလုပ်ဆောင်ပါတယ်။
-
low precision - (ဥပမာ- float(1) ကနေ float(24) အထိ) သတ်မှတ်မယ်ဆိုရင် system က real ကို အသုံးပြုပါလိမ့်မယ်။
-
high precision - (ဥပမာ- float(25) ကနေ float(53) အထိ) သတ်မှတ်မယ်ဆိုရင် system က double precision ကို အသုံးပြုပါလိမ့်မယ်။
အရေးကြီးတဲ့အချက် - real, double precision နှင့် float တွေကို ငွေကြေး သို့မဟုတ် ပိုက်ဆံတွက်ချက်မှုတွေအတွက် လုံးဝမသုံးသင့်ပါဘူး။ numeric သို့မဟုတ် decimal ကိုသာ အသုံးပြုသင့်ပါတယ်။