ဒီအပုဒ္က အခန္းထဲမွာ ဆရာမေရးေပးတဲ့ အပုဒ္ပါ... ေမးခြန္းက ရွည္ေတာ့ ebook ေလးလုပ္ထားတယ္။ သိမ္းထားျပီး Lab Test ေတြနီးမွ ျပန္ႀကည့္လဲ ရတာေပါ့။ ေအာက္မွာေမးခြန္းကို အရင္ေဒါင္းလိုက္ပါ။
Download
အရင္ဆံုး Database တစ္ခုအရင္ေဆာက္မယ္။ က်ေနာ္ စက္ထဲမွာ run ရမယ့္ ကုတ္ေတြကို အစိမ္းေရာင္နဲ့ ျပေပးထားတယ္။
mysql> create database pra2;
Query OK, 1 row affected (0.01 sec)
mysql> use pra2;
Database changed
ျပီးရင္ table ေတြထည့္ႀကမယ္... အရင္ဆံုး Student table ကိုအရင္ထည့္မယ္... (ေမးခြန္းမွာ table ပံုစံပါတယ္) Query Ok တို ့Database Changed တို ့ဆိုတာက က်ေနာ္တို ့လုပ္ခဲ့တဲ့ process မွန္တယ္ဆိုတာကို ျပေပးတာပါ..။ ေနာက္ဟာေတြက်ရင္ က်ေနာ္အဲဒါေလးေတြ ျဖဳတ္ထားခဲ့ေတာ့မယ္။
mysql> create table Student(sid CHAR(5) primary key, sname CHAR(20), major CHAR(10), level CHAR(10),age numeric(10));
table ေဆာက္တဲ့ေနရာမွာ က်ေနာ္တို ့primary key ေတြ foreign key ေတြ သတ္မွတ္ေပးရတယ္... ဘာလို ့လဲ ဆိုေတာ့ ေနာက္ဆံုးေဆာက္ရမယ့္ table မွာ ပထမ table ၂ ခုက column ေတြ ျပန္ပါေနလို ့...အဲဒါေႀကာင့္ Student table ထဲက column တစ္ခုျဖစ္တဲ့ sid က primary ပါ... Enrolled table မွာ ျပန္ပါမယ့္ Sid column က foreign key ပါလို ့သတ္မွတ္တာပါ။ အဲဒါေတြ မမွန္ရင္ က်ေနာ္တို ့table ေတြ ခ်ိတ္တဲ့အခါက်ရင္ error တက္မွာ...
ေနာက္ Class table ေဆာက္မယ္။
mysql> create table Class(cname CHAR(10) primary key, instructor CHAR(20), room CHAR(5));
ေနာက္ဆံုးတစ္ခု Enrolled table ေဆာက္တာမွာ နဲနဲေလး ဂရုစိုက္ရမယ္... အဲဒီ table မွာprimary key , foreign key ေတြ အျပင္ on delete cascade ဆိုတာပါေနတယ္။
mysql> create table Enrolled(sid CHAR(5),cname CHAR(10), primary key(sid,cname), foreign key(sid) references Student(sid) on delete cascade, foreign key(cname) references Class(cname) on delete cascade);
ဒီ table မွာ primary key သတ္မွတ္တာေတာ့ ေျပာစရာမလိုေတာ့ဘူး၊၊ foreign key သတ္မွတ္တာမွာ အေနာက္က references ဆိုျပီးလိုက္တာက က်ေနာ္တို ့foreign key အေနနဲ့ ထားခဲ့တဲ့ column ဟာ ဘယ္ table က column ပါဆိုျပီး ေႀကျငာလိုက္တာ...
ေနာက္ျပီး on delete cascade ဆိုျပီးေႀကျငာတာက က်ေနာ္တို ့ ေမးခြန္း နံပါတ္ ၃ က delete လုပ္ခိုင္းတဲ့ အပုဒ္တစ္ပုဒ္.... on delete cascade မတပ္ရင္ အဲဒီ အပုဒ္ေရးရင္ error တက္နိုင္တယ္...။ ဘာလို့လဲဆိုေတာ့ က်ေနာ္တို ့delete လုပ္မယ့္ data ေတြက Enrolled table ထဲက ေန က်န္တဲ့ table ၂ ခုလံုးကို ခ်ိတ္ျပီးမွ delete လုပ္မွာမို ့လို့။ ဒါျပီးသြားျပီဆိုရင္ က်ေနာ္တုိ ့table သံုးခုလံုး ေဆာက္လို ့ျပီးသြားျပီ။ table ထဲကုိ data ေတြ ထည့္ရမယ္...။ ထည့္ရမယ့္ data ေတြကို ေမးခြန္းမွာေပးထားတယ္ေနာ္...။ ဘယ္လိုထည့္ရမလဲဆိုေတာ့ insert into သံုးျပီးထည့္ရမယ္... လြယ္ပါတယ္ဗ်ာ.. ဒီအဆင့္ေလးေတာ့ ကိုယ့္ဘာကို လုပ္ႀကည့္လိုက္... က်ေနာ္ ေရးမျပေတာ့ဘူး... :D
No-1
အခု နံပါတ္ ၁ ေမးခြန္း စေျဖမယ္... က်ေနာ္တို ့လုပ္ရမွာက Student table ထဲကို new information ထည့္ရမွာ... insert နဲ့လုပ္ရမွာေနာ္... Update လုပ္ရမွာမဟုတ္ဖူးးး ေမးခြန္းေသခ်ာဖတ္ႀကဦးးးး။
mysql> insert into Student values("203","Grace","Geology","Junior",18);
No-2
Class table ထဲက instructor name Smith ဆိုတာကို ျပင္ခိုင္းတာပါ..။ Update သံုးရမွာေပါ့။
mysql> update Class set instructor="Cindy" where cname="class-C";
No-3
လာျပီ... တစ္ပုဒ္လံုးမွာ အခက္ဆံုးပဲ... (နားလည္သြားရင္လဲ လြယ္သြားတာပါပဲ.. ) :D
mysql> delete Student from Student,Class,Enrolled where
-> Enrolled.cname = Class.cname
-> And Enrolled.sid = Student.sid
-> And Class.room="R-2";
က်ေနာ္တို ့ဖ်က္ခ်င္တာက Room number R-2 မွာ အပ္ထားတဲ့ ေက်ာင္းသားေတြရဲ ့information အကုန္လံုးကို delete လုပ္သြားမွာ.. အဲေတာ့ က်ေနာ္တုိ ့table သံုးခုလံုးႀကည့္ရမယ္.. Class table ထဲက room ဆိုတဲ့ column ကိုႀကည့္မယ္.. အဲဒီ room ထဲမွာမွ R-2 ဆိုတာကိုႀကည့္မယ္.. R-2 မွာ အပ္ထားတဲ့ ေက်ာင္းသားကို တန္းမေတြ ့ရဘူး class name ကိုပဲေတြ ့ရေတာ့ class-A ဆိုတာကိုမွတ္ထားလိုက္...။ အဲဒါကိုမွ Enrolled Table မွာႀကည့္လိုက္ေတာ့ sid ကိုေတြ ့ရျပီ.. အဲဒီ sid ရဲ ့row တစ္ခုလံုးကို ဖ်က္မယ္...။ နားလည္မယ္ထင္ပါတယ္။
No-4
သူလဲ ခုနက ဟာနဲ့ သိပ္မကြာဘူး... ဒီမွာက်ေတာ့ room number နဲ့မသြားဘဲ instructor name နဲ့ ႀကည့္တာ... ဒီအပုဒ္ကေတာ့ delete လုပ္ခုိင္းတာမဟုတ္ဖူး. select နဲ့လုပ္ရမွာ....
mysql> select sname from Student,Class,Enrolled
-> where Enrolled.cname = Class.cname
-> and Enrolled.sid = Student.sid
-> and Class.instructor = "James";
ဒီ အတိုင္းေရးလို ့မွန္တယ္ဆိုရင္ output ေလးတစ္ခုထြက္လာမွာပါ... ။
Mary
Elaine
အဲလိုေလးရလိမ့္မယ္။
No-5
ေမးခြန္းက ရွင္းရွင္းေလးမို ့ထပ္ရွင္းမေနေတာ့ဘူးေနာ္... ေမးခြန္းပဲ ဖတ္ႀကည့္လိုက္ပါ.. ဒီမွာ သံုးရမွာက max ဆိုတဲ့ function ေလးတစ္ခုသံုးရလိမ့္မယ္... ဘာလို့လဲ ဆိုေတာ့ အသက္အႀကီးဆံုး ေက်ာင္းသားကိုလိုခ်င္တယ္လို ့ေျပာထားလို ့...
mysql> select max(age) from Student where
-> Student.major = "Chemistry" or
-> Student.major = "English";
ထြက္လာမယ့္ output က 21 ပါ။
No-6
ဒါေလးကေတာ့ ေတာ္ေတာ္ေလးလြယ္ပါတယ္... ။
mysql>select sname from Student;
သူက Student table ထဲက sname ေတြခ်ည္းပဲျပသြားလိမ့္မယ္..
No-7
mysql> select sname from Student,Enrolled where
-> Enrolled.sid = Student.sid and
-> Enrolled.cname = "Class-E";
table 2 ခုပဲ ခ်ိတ္သြားတယ္... ဘာလို ့လဲ ဆိုေတာ့ Class Table ကိုခ်ိတ္စရာမလိုဘူး... ေမးခြန္းမွာႀကည့္ႀကည့္။ သူ ့ရဲ ့output က Empty Set ဆုိျပီးထြက္လာလိမ့္မယ္။
No-8
ဒီေမးခြန္းကလဲ လြယ္ပါတယ္... Table ေတြခ်ိတ္စရာေတာင္မလိုဘူးးး စာေမးပြဲမွာ အဲလိုေလးဘဲေမးရင္ သိပ္ေကာင္းမွာ... :D
mysql> select sname from Student where age > 18;
သူနဲ့ သက္ဆိုင္တဲ့ sname ေတြထြက္လာလိမ့္မယ္...
That's all ~~~ :D
No comments:
Post a Comment