Professional Documents
Culture Documents
SQL
SQL
Table of Contents
WINDOW PC ေပၚကို mysql install ျပဳလုပ္ျခင္း ......................................................................................... 3
SQL INTRO............................................................................................................................................ 9
SQL Syntax ........................................................................................................................................... 11
SQL SELECT Statement ..................................................................................................................... 12
SQL SELECT DISTINCT Statement ..................................................................................................... 13
SQL WHERE Clause ............................................................................................................................ 14
SQL AND & OR Operators ................................................................................................................... 16
SQL ORDER BY Keyword ................................................................................................................... 18
SQL INSERT INTO Statement .............................................................................................................. 20
SQL UPDATE Statement ...................................................................................................................... 22
SQL DELETE Statement ....................................................................................................................... 24
SQL TOP Clause ................................................................................................................................... 25
SQL LIKE Operator .............................................................................................................................. 27
SQL Wildcards ...................................................................................................................................... 29
SQL IN Operator ................................................................................................................................... 31
SQL BETWEEN Operator..................................................................................................................... 32
SQL Alias ............................................................................................................................................. 34
SQL Joins.............................................................................................................................................. 35
SQL INNER JOIN Keyword ................................................................................................................. 36
SQL LEFT JOIN Keyword .................................................................................................................... 37
SQL RIGHT JOIN Keyword ................................................................................................................. 38
SQL FULL JOIN Keyword ................................................................................................................... 39
SQL UNION Operator........................................................................................................................... 40
SQL SELECT INTO Statement ............................................................................................................. 42
SQL CREATE DATABASE Statement ................................................................................................. 44
SQL CREATE TABLE Statement ......................................................................................................... 44
SQL Constraints .................................................................................................................................... 46
SQL NOT NULL Constraint.................................................................................................................. 46
Page1
THET NAUNG HTUT SQL
Page2
THET NAUNG HTUT SQL
What is XAMPP?
ကၽြန္ေတာ္တို႕ဟာ Apache web server တစ္ခုကို install ျပဳလုပ္ဖို႔ရန္ မလြယ္ တာကို သိၾကပါတယ္။
ၿပီးေတာ့ MySQL, PHP and Perl တို႔ကို server ၌ ေပါင္းဖို႔ရန္ ျပဳ လုပ္တဲ့အခါမွာလည္း ရ ရွိဖို႔ရန္ခက္ခဲပါတယ္။
XAMPP သည္ Apache ကို ျဖန္႕ေ၀ၿပီးေတာ့ install လုပ္ဖို႕ရန္ အလြနလ
္ ြယ္ကူပါတယ္။ XAMPP တြင္ MySQL,
PHP and Perl ပါ၀င္ေနၿပီးေတာ့ download, extract and start ကဲ့သို ၎တို႔ကိုအသံုးျပဳဖို႔ ရန္လည္း လြယ္ကူပါ
တယ္။
Apache သည္ လူသံုးမ်ားေသာ internet server တစ္ခုျဖစ္ပါတယ္။ ၎သည္ ကြန္ပ်ဴတာ ကို limit မရွိပဲ
နဲ free ျဖန္႔ေ၀ထားတဲ့ server တစ္ခုလည္း ျဖစ္ပါတယ္။
အေပၚကျပထားတဲ့ ပံုမွာ အနီနဲ႕ ၀ိုင္းထားတဲ့ ေနရာကေန XAMPP package ကို download လုပ္လိုက္ပါမယ္။ ၿပီး
လွ်င္ software မရမ္းခင္ ကြန္ပ်ဴတာကို အသံုးျပဳေနတဲ့သူဟာ window vista ဒါမွမဟုတ္ window7 အသံုးျပဳ
ေနလွ်င္ ေအာက္ကအတိုင္း အရင္လုပ္ေဆာင္လိုက္ပါဦး။
Start àcontrol panelàUser Accounts and Family SafetyàTurn user Account Control on or offà အဲဒီမွာ
[turn user account control on or off ] ကို အမွန္ျခစ္ေလးေပးထားလွ်င္ ျဖဳတ္ထားလိုက္ပါ။
Page3
THET NAUNG HTUT SQL
Page4
THET NAUNG HTUT SQL
နည္းလမ္း (၁) - Command promt မွာ SQL ကို ဘာေၾကာင့္တမ္းအသံုးမျပဳႏိုင္ေသးလဲဆိုရင္ SQL software
ရွိတဲ့ directory လမ္းကိုမသိေသးလုိ႔ျဖစ္ပါတယ္။ ထို႔ေၾကာင့္ ကၽြန္ေတာ္တို႔ဟာ SQL ကို directory နဲ႕အသံုးျပဳ
လို႔ ရဖို႔ရန္ ေအာက္ပါအတိုင္း အဆင့္အဆင့္လုပ္ေဆာင္သြားလိုက္ပါမယ္။ ေအာက္မွာ ပံုႏွင့္ အညြန္းျပထားပါ
တယ္။
အဲဒါေတြျပင္ျပီးတာနဲ႕ အားလံုး ok ေပးလိုက္ပါ။ အခုျပန္ျပီး Start à Run à cmd လို႔ ျပန္ၿပီး ရိုက္ထည့္ ပါမယ္။
ၿပီးလွ်င္ အေစာကလိုပဲ mysql –uroot လို႕ ရိုက္ထည့္ၾကည့္ပါ။ sql စၿပီး welcome monitor ေပၚ၌ current စလုပ္ပါ
ျပီ။ ဒါဆိုရင္ sql code ေတြ command pront မွာ စ run လို႔ ရပါၿပီ ။
Page5
THET NAUNG HTUT SQL
Page6
THET NAUNG HTUT SQL
CONFIGURING MYSQL
MySQL installing အပိုင္းၿပီးသြားေတာ့ အခု MySQL configuring ျပဳလုပ္တဲ့ အပိုင္းပါ။ အရင္ဦးဆံုး
shoutcut ထုတ္ထားရေအာင္။ Start à Search Box àSearch Box မွာ cmd လို႔ရိုက္ထည့္ၿပီးရွာရေအာင္။ ၿပီး
လွ်င္ cmd ဆိုတဲ့ ဖိုင္ေလးေတြရင္ right click à Pin to start menu ေရြးလိုက္ပါ။ ၿပီးလွ်င္ start menu မွာ cmd ဖိုင္
ေလး ေပၚေနပါေလ့မယ္။
အဲဒါကို copy à Desktop à right click à paste shoutcut လုပ္ပါ။ ေနာက္ၿပီး အဲဒီ shoutcut
ကုိဖြင့္ၾကည့္ပါ။ <c:\WINDOWS\system32> start in ျပဳလုပ္ေနပါ ေလ့မယ္။ ေနာက္ျပီးလွ်င္ Window form
ပံုစံကို ျပင္ဆင္ပါ့မယ္။ ဆြဲႏိုင္၊ ဆန္ႏိုင္ ေအာင္ေပါ့။ Shoutcut ကို right click à properties à layout မွာ
ေအာက္ပါအတိုင္း ျပင္ဆင္ပါ့မယ္။ ကိုယ္ႀကိဳက္တဲ့ပံုစံထားၾကည့္ပါ။ အဆင္ေျပတာေလာက္ေပါ့။
mysql> UPDATE mysql.user SET Password = PASSWORD ( ‘thetnaung’ ) WHERE User = ‘root’;
လို႕ေရးပါမယ္။ အဲလိုဆိုရင္ 1 rows affected လို႕ေပၚလာျပီး Query ok လို႕ ျပလာပါ ေလ့မယ္။ ျပီးလွ်င္
Page7
THET NAUNG HTUT SQL
Page8
THET NAUNG HTUT SQL
SQL INTRO
WHAT IS MYSQL?
SQL ကိုအေျခခံအားျဖင့္ အလြယ္ေခၚမယ္ဆိုရင္ေတာ့ Structured Query Language (ေမးျမန္းမႈေတြကို
တည္ေဆာက္ထားတဲ့ ဘာသာရပ္ႀကီး) တစ္ခုလို႔ေခၚပါတယ္။ သူ႔ကို definition ဖြငမ
့္ ယ္ဆိုရင္ျဖင့္ -
· MySQL သည္ database management system တစ္ခုျဖစ္သည္။
Database တစ္ခုဆိုသည္မွာ data ေတြကို စုစည္းတည္ေဆာက္ထားတာတစ္ခုျဖစ္သည္။ Database ဆိုတာက
ေတာ့ မ်ားျပားတဲ့ သတင္းအခ်က္အလက္ပမာဏေတြကို List လုပ္ထားၿပီးေတာ့ အဲဒီ database အတြင္းက data
ေတြဟာ corporate network (ေပါင္းစည္းထားတဲ့ ကြန္ယက္) သဖြယ္ အတြင္းမွာရွိေနပါတယ္။ ဥပမာ-
ပန္းခ်ီျပခန္း တစ္ခုဟာလည္း database တစ္ခုျဖစ္ႏိုင္ပါတယ္။ computer database တစ္ခုအတြင္းမွာ data ေတြ
add တယ္၊ လက္ခံမယ္၊ ၿပီးေတာ့ လုပ္ေဆာင္မယ္ဆိုရင္ ကၽြန္ေတာ္တသ
ို႔ ည္ MySQL Server တစ္ခုကဲ့သို႕ေသာ
database management system တစ္ခုလိုလာပါျပီ။ ဒါမွ computer ဟာ ႀကီးမားတဲ့ အခ်က္အလက္ပမာဏေတြကို
ေကာင္းစြာစီမခ
ံ န္႔ခြဲႏိုင္ပါလိမ့္မယ္။ Database management system တစ္ခုဆိုတာဟာ data ေတြ management
ျပဳလုပ္တဲ့အခါ central အက်ဆံုး အခန္းက႑မွာ ပါ၀င္တြက္ခ်က္မႈေတြျပဳလုပ္ပါတယ္။ အမွီအခုိကင္းေသာ
ကြန္ပ်ဴတာ standalone ပံုစံ အသံုး၀င္မႈတစ္ခုအျဖစ္ဖို အတြက္ ဒါမွမဟုတ္ အျခား application အစိတ္အပိုင္း
တစ္ခုျဖစ္ဖို႔အတြက္ Database ႀကီးတစ္ခု ပါ၀င္မွ ေကာင္းစြာလုပ္ေဆာင္ ႏိုင္ပါလိမ့္မယ္။
Page9
THET NAUNG HTUT SQL
ေတြကလ
ို ည္း LAMP software stack အျဖစ္အသံုးျပဳၾကရပါတယ္။ ေနာက္ျပီးေတာ့ Wikipedia, Google and
Facebook ေတြမွာလည္း MySQL အသံုးျပဳမႈေတြပါ၀င္ပါတယ္။ ဘာေၾကာင့္လဲဆိုေတာ့ MySQL ဟာhighly
scalable နဲ႕ website ေတြကို ႀကီးထြားႏိုင္ လို႔ျဖစ္ပါတယ္။
SQL CAN DIVIDED INTO TWO PART ARE (DML AND DDL)
Data Manipulating Language(DML) - Data ေတြကို စီမံကၽြမ္းက်င္စြာ ခန္႕ခြဲတဲ့အပုိင္း မွာ ေအာက္ပါအခ်က္
ေတြပါ၀င္ပါတယ္။
· SELECT – Database တစ္ခုမွ data ေတြကို ဆြဲထုတ္မယ္။
· UPDATE – Database တစ္ခုအတြင္းက data ေတြကို အခ်ိန္ႏွင့္ အမွ် ျပဳျပင္မယ္။
· DELETE – Database တစ္ခုမွ data ေတြကို delete လုပ္မယ္။
· INSERT INTO – Database တစ္ခုအတြင္းသို႕ data အသစ္ေတြ ထပ္ေပါင္းထည့္ မယ္။
Data Manipulattion Language(DML) - SQL ၏ DDL အပိုင္းကေတာ့ database table ေတြ ဖန္တီးတာ၊ ျဖတ္
တာေတြကို ခြင့္ျပဳပါတယ္။ ျပီးေတာ့ (key) ေတြနဲ႕ ညြန္းၾကား သတ္မွတ္ႏိုင္မယ္။ Table ေတြၾကားမွာ link ေတြနဲ႕
အထူးျပဳႏိုင္မယ္။ Table ေတြၾကားမွာ အကန္႕အသတ္ေတြ ခ်မွတ္ႏိုင္မယ္။ ေအာက္မွာအေရးႀကီးဆံုး DDL
statement ေတြပါ။
· CREATE DATABASE- DATABASE အသစ္တစ္ခု လုပ္မယ္။
· ALTER DATABASE- DATABASE တစ္ခုကို modified လုပ္မယ္။
· CREATE TABLE- Table အသစ္ဖန္တီးမယ္။
· ALTER TABLE- Table ကို modified လုပ္မယ္။
· DROP TABLE- Table ကို delete လုပ္မယ္။
· CREATE INDEX- အညႊန္းကိန္းေတြ ဖန္တီးမယ္။(search key)
· DROP INDEX- အညႊန္းကိန္းေတြကို delete လုပ္မယ္။
Page10
THET NAUNG HTUT SQL
SQL Syntax
Database Tables
Database တစ္ခုမွာ အၿမဲပါ၀င္ေလ့ရွိတာကေတာ့ table ပါပဲ။ Table တစ္ခုစီမွာ နာမည္ေပးျပီးေတာ့
သတ္မွတ္ၾကပါတယ္။ (ဥပမာ “၀ယ္သ”ူ ဒါမွမဟုတ္ “ေရာင္းသူ” ေပါ့)။ ဇယားမွာပါတဲ့ အခ်က္အလတ္ေတြႏွင့္
row အပိုင္းကိုေတာ့ record လို႕ ေခၚႏိုင္ပါတယ္။
ဥပမာအေနနဲ႕ “Persons” လို႕ေခၚတဲ့ေအာက္ကဇယားမွာၾကည့္ပါ။
SQL Statements
လုပ္ေဆာင္ခ်က္ေတြအမ်ားစုကို ထမ္းေဆာင္ဖို႔ရန္ SQL statement မ်ားကို ကၽြန္ေတာ္တို႔ အသံုးခ်ရပါ
တယ္။ ေအာက္မွာေရးထားတဲ့စာေၾကာင္းဟာ SQL statement ႏွင့္ records ေတြအားလံုး ကို ေရြးခ်ယ္လိုက္တာ
ျဖစ္ပါတယ္။
SELECT * FROM Persons
Page11
THET NAUNG HTUT SQL
Result:
LastName FirstName
MgMg U
KyawThu Mg
Thetnaung Mg
Result အေနနဲ႔ကေတာ့:
P_ID LastName FirstName Address City
1 MgMg U 21 Street Dagon Yangon
2 KyawThu Mg 32 yatanar St Bahan Yangon
3 Thetnaung Mg WinZin Meiktila
Page12
THET NAUNG HTUT SQL
Result အေနနဲ႔ကေတာ့:
City
Yangon
Meiktila
Page13
THET NAUNG HTUT SQL
SQL မွာ စာလံုးတန္ဖိုးေတြကို single quote ႏွစ္ခုနဲ အသံုးျပဳပါတယ္။ (Database system အမ်ားစုကေတာ့
double quotes ကိုပဲ လက္ခံပါလိမ့္မယ္) သို႔ေသာ္လည္းပဲ ကိန္းဂဏန္းတန္ဖိုးေတြမွာ quotes ( ‘ ’ ) ကို အသံုးမျပဳ
ပါဘူး။ ေအာက္မွာ example ၾကည့္ပါ။
This is correct:
SELECT * FROM Persons WHERE FirstName = ‘U’
This is wrong:
SELECT * FROM Persons WHERE FirstNma = U
For numeric values:
This is correct:
SELECT * FROM Persons WHERE Year = 1986
Page14
THET NAUNG HTUT SQL
This is wrong:
SELECT * FROM Persons WERE Year = ‘ 1965’
Page15
THET NAUNG HTUT SQL
ေအာက္ကပံုစံအတုိင္းရရွိပါတယ္။
P_ID LastName FirstName Address City
2 KyawThu Mg 32 yatanar Yangon
OR Operator Example
အခု ကၽြန္ေတာ္တို႕ ပထမနာမည္ “Mg” ႏွင့္ ညီတဲ့ နာမည္ေတြ ဒါမွမဟုတ္ ပထမနာမည္ “U” ႏွင့္ ညီတဲ့နာမည္
ေတြကို ေရြးခ်ယ္ပါမယ္။ သူ႕ရဲ႕ statement ကေတာ့
Result အေနနဲ႕ကေတာ့
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yatanar Yangon
3 Yan Naung Mg WinZin Meiktila
Page16
THET NAUNG HTUT SQL
Result အေနနဲ႕ကေတာ့
P_ID LastName FirstName Address City
2 KyawThu Mg 32 yantarnar Yangon
Page17
THET NAUNG HTUT SQL
ORDER BY Example
The “ Persons” table:
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yatanar Yangon
3 Yan Naung Mg WinZin Meiktila
4 Yan Aung Mr TharkayTa Yangon
အခု ကၽြန္ေတာ္တို အေပၚမွ table ကေန လူေတြအားလံုးကို ေရြးခ်ယ္ျပီးေတာ့မွ အဲဒီ လူေတြကို သူတို႔ရဲ႕
lastname ေတြကို sorting စီၾကည့္ရေအာင္။
Result အေနနဲ႕ကေတာ့
Page18
THET NAUNG HTUT SQL
Result အေနနဲ႕ကေတာ့
P_ID LastName FirstName Address City
4 Yan Aung Mr TharkayTa Yangon
3 Yan Naung Mg WinZin Meiktila
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yatanar Yangon
Page19
THET NAUNG HTUT SQL
ေအာင္ပါပံုစံအတိုင္းရပါတယ္။
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yatanar Yangon
3 Yan Naung Mg WinZin Meiktila
4 NayLin Mr 23 home Pyinmanar
Page20
THET NAUNG HTUT SQL
ေအာက္ပါအတုိင္း ရရွိပါတယ္။
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yatanar Yangon
3 Yan Naung Mg WinZin Meiktila
4 NayLin Mr 23 home Pyinmanar
5 Min Aung U
Page21
THET NAUNG HTUT SQL
UPDATE Persons
SET Address = ‘Kannar road’ , City = ‘ Magway’
Page22
THET NAUNG HTUT SQL
Result:
P_ID LastName FirstName Address City
1 MgMg U Kannar road Magway
2 KyawThu Mg Kannar road Magway
3 Yan Naung Mg Kannar road Magway
4 NayLin Mr Kannar road Magway
5 Min Aung U Kannar road Magway
Page23
THET NAUNG HTUT SQL
Or
Page24
THET NAUNG HTUT SQL
Oracle Syntax
SELECT column_နာမည္
FROM table_name
WHERE ROWNUM <= number
Example
SELECT *
FROM Persons
WHERE ROWNUM <= 5
SELECT TOP 2 *
FROM Persons
Page25
THET NAUNG HTUT SQL
Result အေနနဲ႕ကေတာ့
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yatanar Yangon
Page26
THET NAUNG HTUT SQL
Result အေနနဲ႕ကေတာ့ -
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yatanar Yangon
မွတ္ခ်က္။ ။“%” သေကၤတကို wildcards( pattern အတြင္း စာလံုးေတြေရာေနျခင္း) ကို အဓိပၸာယ္ သတ္မွတ္ဖို႔
ရန္ အသံုးျပဳႏိုင္ပါတယ္။ မတိုင္ခင္၊ ျပီးေနာက္ ႏွစ္ခုစလံုးကို အသံုးျပဳပါ တယ္။
ü အခု ေနာက္ထပ္ “Persons” table ကေန “n” ႏွင့္ ဆံုးတဲ့ city ေတြကို ေရြးၾကည့္ရ ေအာင္။
Result အေနနဲ႕ကေတာ့-
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yatanar Yangon
ü အခုေနာက္တစ္မ်ိဳးကေတာ့ “Persons” table မွ “eik” ပါ၀င္တဲ့ city အတြင္းက pattern ေတြကို ေရြးၾကည့္ရ
ေအာင္။
Page27
THET NAUNG HTUT SQL
Result အေနနဲ႕ကေတာ့-
P_ID LastName FirstName Address City
3 Yan Naung Mg WinZin Meiktila
ü ေနာက္တစ္မ်ိဳး ပံုစံျဖင့္ NOT keyword ကို သံုးၿပီး city အတြင္းမွာရွိတဲ့ “eik” မပါတဲ့ person ေတြကို select
ျပဳလုပ္ၾကည့္ရေအာင္။
SELECT *
FROM Persons
WHERE City NOT LIKE ‘eik’
Result အေနနဲ႕ကေတာ့-
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yatanar Yangon
Page28
THET NAUNG HTUT SQL
SQL Wildcards
SQL wildcards ကို database အတြင္းက data ေတြရွာျခင္းအတြက္ အသံုးျပဳႏိုင္ပါ တယ္။
SQL Wildcards
Ø SQL wildcards သည္ database အတြင္း data ေတြရွာတဲ့အခါမွာ character ေတြ တစ္ခု၊ တစ္ခုထက္ပိုၿပီး
ေတာ့ အစားထိုးႏိုင္ပါတယ္။
Ø SQL wildcards သည္ SQL LIKE operator ႏွင့္အတူ အသံုးျပဳရပါမည္။
Wildcard Description
% သုည ဒါမွမဟုတ္ ပိုျပီးေတာ့ character ေတြအတြက္ အစားထိုး တယ္။
_ တိက်တဲ့ character တစ္ခုအတြက္ အစားထိုးတယ္။
[charlist] Charlist အတြင္း မည္သည့္ character တစ္ခုစီအတြက္
[^charlist] Charlist အတြင္း မည္သည့္ character တစ္ခုစီမဟုတ္တာအတြက္
Or
[!charlist]
Result အေနနဲ႕ကေတာ့-
P_ID LastName FirstName Address City
2 KyawThu Mg 32 yantarnar Yangon
Result အေနနဲ႕ကေတာ့
P_ID LastName FirstName Address City
2 KyawThu Mg 32 yantarnar Yangon
3 Yan Naung Mg WinZin Meiktila
Page29
THET NAUNG HTUT SQL
အခု ကၽြန္ေတာ္တို႔ Pesons table ကေနျပီးေတာ့ပဲ့ “b” or “y” or “k”နဲ႕မစတဲ့ လူေတြကို select လုပ္ၾကည့္ရ
ေအာင္။
SELECT *
FROM Persons
WHERE LastName LIKE ‘[ !byk]%’
Result အေနနဲ႕ကေတာ့-
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
Page30
THET NAUNG HTUT SQL
SQL IN Operator
IN operator သည္ WHERE clause တစ္ခုတြင္ တန္ဖိုးေတြကို ဆင့္ပြားဆင့္ပြား အထူး ျပဳဖို႕ရန္ ခြင့္ျပဳပါတယ္။
SQL IN Syntax
SELECT column_နာမည္မ်ား
FROM table_name
WHERE column_နာမည္ IN ( value 1, value2,…)
IN Operator Example
The “Persons” table
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yantarnar Yangon
3 Yan Naung Mg WinZin Meiktila
အခု ကၽြန္ေတာ္တို႕အေပၚက Persons table ကေန last name ေတြဟာ “MgMg” or “KyawThu” ေတြႏွင့္ညီတဲ့
Persons ေတြကို ေရြးၾကည့္ရေအာင္။
Result အေနနဲ႕ကေတာ့ -
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
2 KyawThu Mg 32 yantarnar Yangon
Page31
THET NAUNG HTUT SQL
Result အေနနဲ႕ကေတာ့
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
3 Yan Naung Mg WinZin Meiktila
ဒီေနရာမွာ နည္းနည္းရွင္းစရာရွိပါတယ္။ အခ်ိဳ႕ databases ေတြမွာ, ဥပမာ-MgMg ႏွင့္ Yan Naung ဟာ table မွာ
list မလုပ္ခဲ့ဘူး၊ မထည့္သြင္းခဲ့ဘူးဆိုလွ်င္ BETWEEN operator သည္ ကၽြန္ေတာ္တို႕က (test) စမ္းသပ္မႈ
လုပ္တဲ့တန္ဖိုးေတြကို ဖယ္ထုတ္ ျပီးေတာ့ field ေတြကိုသာလွ်င္ select လုပ္လိမ့္ပါမယ္။ နားလည္သြားေအာင္
ေအာက္မွာ ဇယားကိုၾကည့္လိုက္ပါဦး။ ေမာင္ေမာင္ႏွင့္ ရန္ေနာင္ မပါလို႕ field ေတြကို သာလွ်င္ ျပတာျဖစ္ပါ
တယ္။
P_ID LastName FirstName Address City
တကယ္လို႕ MgMg ဟာ list ျပဳလုပ္ခဲ့ျပီး၊ Yan Naung ဟာ list မလုပ္ခဲ့ဘူးဆိုလွ်င္ BETWEEN operator သည္
test လုပ္တဲ့ထဲမွ list ထဲမွာပါ၀င္တဲ့နာမည္ကိုပဲ ေရြးပါလိမ့္ မယ္။ ဇယားၾကည့္လိုက္ပါဦး။ နားလည္သြားေအာင္။
P_ID LastName FirstName Address City
1 MgMg U 21 Street Yangon
Page32
THET NAUNG HTUT SQL
Example 2
ေနာက္ example တစ္ခုက NOT BETWEEN ပါ။ ရွင္းပါတယ္။ မပါတဲ့ဟာေပါ့။
SELECT * FROM Persons
WHERE LastName
NOT BETWEEN ‘MgMg’ AND ‘Yan Naung’
Result အေနနဲ႕ကေတာ့-
P_ID LastName FirstName Address City
2 KyawThu Mg 32 yantarnar Yangon
Page33
THET NAUNG HTUT SQL
SQL Alias
ကၽြန္ေတာ္တို႔ဟာ alias တစ္ခု သံုးျပီးေတာ့ table တစ္ခုထဲကို (သို႕) column တစ္ခုထဲကို နာမည္ပြား(သို႕)
အျခားနာမည္ပြားတစ္ခု ထပ္ေပးႏိုင္တယ္။ ဘယ္လိုေနရမ်ိဳးေတြမွာသံုး လဲဆိုရင္ အလြန္ရွည္လ်ားတဲ(့ သို႕)
ရႈပ္ေထြးတဲ့ table နာမည္ေတြ (သို႕) column နာမည္ ေတြရွိေနလွ်င္ ၎တို႕ကို ျပဳလုပ္တဲ့အခါမ်ိဳးမွာ ေကာင္းစြာ
အသံုးျပဳႏိုင္ပါတယ္။
Alias Example
“Persons” table နဲ႕ “Product_Orders” လို႕ေခၚတဲ့ table ႏွစ္ခုရွိတယ္လို႕ ယူဆၾကပါစို႔။ ကၽြန္ေတာ္တို႕ဟာ အခု
Persons ကို “p” ၊ Product_Orders ကို “pro” လို႔ အသီးသီးေပးၾကည့္ရေအာင္။
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p,
Product_Orders AS po
WHERE p.LastName = ‘MgMg’ AND p.FirstName = ‘U’
Page34
THET NAUNG HTUT SQL
SQL Joins
Ø SQL joins ကို table ႏွစ္ခု(သို႕) ႏွစ္ခုထပ္ပိုေသာ table မ်ားကို တိုက္ဆိုင္စစ္ေဆးဖို႔ ရန္ အသံုးျပဳပါတယ္။
၎သည္ ထို table ေတြအတြင္း တိက်တဲ့ column ေတြအၾကား ဆက္ႏြယ္တာေတြေပၚမွာ အေျခခံၿပီးေတာ့
တိုက္ဆိုင္စစ္ေဆးပါ တယ္။
Ø Database တစ္ခုအတြင္း table မ်ားကို key ေတြ တစ္ခုႏွင့္ တစ္ခု ခ်ိတ္ဆက္ျပီးေတာ့ အသံုးျပဳတာ ျဖစ္ပါ
တယ္။
Ø Primary key သည္ row တစ္ခုစီအတြက္ unique တန္ဖိုးတစ္ခုႏွင့္အတူ columnတစ္ခု ( သို႔ column မ်ား၏
ဆက္သြယ္ထားတာတစ္ခ)ု ျဖစ္သည္။ Primary တစ္ခုစီ၏တန္ဖိုးသည္ table အတြင္း unique (တစ္သီးတစ္
ျခား) ျဖစ္ရမည္။ ရည္ရြယ္ခ်က္မွာ table တိုင္းတြင္ data အားလံုးကို ထပ္ခါထပ္ခါ မေရးျဖစ္ေအာင္ table
ေတြျဖတ္ျပီးေတာ့ data ေတြ အတူတကြ (bind) ခ်ည္ေႏွာင္ဖို႔ရန္ ျဖစ္ပါတယ္။
Page35
THET NAUNG HTUT SQL
Page36
THET NAUNG HTUT SQL
အခု ကၽြန္ေတာ္တို႔ အေပၚက table ႏွစ္ခုကေန Persons ေတြအားလံုးႏွင့္ သူတို႔၏ Order ေတြကို list
လုပ္ၾကည့္ရေအာင္။
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P Id= Orders.P_Id
ORDER BY Persons.LastName
LEFT JOIN keyword သည္ ဘယ္ဘက္က table (Persons) ေတြအားလံုးကို ညာဖက္ (Orders) တြင္ မပါလွ်င္
ေတာင္မွ ျပန္ေခၚေပးတယ္။
Page37
THET NAUNG HTUT SQL
Page38
THET NAUNG HTUT SQL
Page39
THET NAUNG HTUT SQL
“Employees_Mandalay”:
E_ID E_Name
01 U Yar Zar
02 U Nay Naing
03 Mg Yel Soe
04 Mg Zar Ni
အခု ကၽြန္ေတာ္တို႔ ရန္ကုန္ႏွင့္ မႏၲေလးက ျခားနားတဲ့ (employees) အလုပ္သမားေတြ အားလံုးကို list လုပ္ခ်င္
လွ်င္ -
SELECT E_Name FROM Employees_Yangon
UNION
SELECT E_Name FROM Employees_Mandalay
Page40
THET NAUNG HTUT SQL
Result:
E_Name
U Kyaw Thu
U Min Soe
Mg Yel Soe
Mg Zaw Naing
U Yar Zar
U Nay Naing
Mg Yel Soe
Mg Zar Ni
Page41
THET NAUNG HTUT SQL
Ø ကၽြန္ေတာ္တို႔ဟာ table ကို copy လုပ္ျပီးေတာ့ အျခား database အတြင္းသို႔ IN clause ကို
အသံုးျပဳကာလည္း ေပါင္းထည့္ႏိုင္ပါတယ္။
SELECT *
INTO Persons_Backup IN ‘Backup.mdb’
FROM Persons
ကၽြန္ေတာ္တို႔ဟာ WHERE clause ကိုလည္း add ၿပီးအသံုးျပဳႏိုင္ပါတယ္။ ေအာက္က SQL statement သည္
“Yangon” ၿမိဳ႕မွာ ေနထိုင္တဲ့ လူေတြႏွင့္အတူ table ကို “Backup” လုပ္တဲ့ပံုစံပါ။
Page42
THET NAUNG HTUT SQL
Page43
THET NAUNG HTUT SQL
Page44
THET NAUNG HTUT SQL
Page45
THET NAUNG HTUT SQL
SQL Constraints
Ø Constraints သည္ data type ကို limit ျပဳလုပ္ဖို႔ရန္အသံုးျပဳပါတယ္။
Ø Constraints ကို table တစ္ခု ဖန္တီးတဲ့အခါ (CREATE TABLE statement ႏွင့္အတူ) ဒါမွမဟုတ္ table
ဖန္တီးျပီးမွ (ALTER TABLE statement ႏွင့္အတူ) အထူးျပဳျပီး အသံုးျပဳႏိုင္ပါတယ္။
ေအာက္ပါ constraints ေတြကေတာ့ အခ်က္အခ်ာၾကတာေသာ Constraint ေတြျဖစ္ ၾကပါတယ္။
· NOT NULL
· UNIQUE
· PRIMARY KEY
· FOREIGN KEY
· CHECK
· DEFAULT
ေနာက္ သင္ခန္းစာေတြသည္ constraint တစ္ခုစီ၏ အေသးစိတ္အခ်က္အလက္ေတြ ေဖာ္ျပတာျဖစ္ပါတယ္။
Page46
THET NAUNG HTUT SQL
Ø UNIQUE ႏွင့္ PRIMARY KEY constraint ႏွစ္ခုစလံုးဟာ column တစ္ခုအတြက္ ဒါမွမဟုတ္ column
အစုမ်ားအတြက္ တစ္မူထူးျခားဖို႕အတြက္ အာမခံေထာက္ပံ့တာကို ဆိုလိုပါတယ္။
Ø PRIMARY KEY constraint တစ္ခုမွာဆိုလွ်င္ ၎ေပၚကို သတ္မွတ္ထားတဲ့ UNIQUE constraint ရွိပါ
တယ္။
Ø Table တစ္ခုစီအတြက္ UNIQUE constraints မ်ားစြာရွိႏိုင္ပါတယ္။ ဒါေပမဲ့ PRIMAEY KEY constraint
တစ္ခုသာလွ်င္ ရွိရပါမည္။
Column ေတြ အသီးသီးေပၚမွာ UNIQUE constraint တစ္ခု သတ္မွတ္ဖို႕ရန္အတြက္ ေအာက္ပါ SQL syntax
ကို အသံုးျပဳပါတယ္။
CREATE TABLE Persons
(
P_Kd int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRANT uc_PersonID UNIQUE (P_Id, LastName)
)
Page47
THET NAUNG HTUT SQL
MySQL:
ALTER TABLE Persons
DROP INDEX uc_PersonID
MySQL:
CREATE TABLE Persons
(
P_Id int NOT NULL
LastName varchar (255) NOT NULL,
FirstName varchar(255),
Address varchar (255),
PRIMARY KEY (P_Id)
)
Page48
THET NAUNG HTUT SQL
Page49
THET NAUNG HTUT SQL
MySQL:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar (255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar (255),
CHECR (P_Id>0)
)
Page50
THET NAUNG HTUT SQL
Default constraint တြင္ GETDATE() ကဲ့သို႔ေသာ function ေတြကို အသံုးျပဳျပီးေတာ့ system တန္ဖိုးေတြကို
ေပါင္းထည့္ႏိုင္ပါတယ္။
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
OrderDate date DEFAULT GETDATE()
)
MySQL:
ALTER TABLE Persons
ALTER Country SET DEFAULT ‘Yangon’
Page51
THET NAUNG HTUT SQL
Page52