คำสงั่ INSERT
Staff sname pcode
DB
sid สามารถ ขาดี PR
205 สมชอบ รอบคอบ PR
310 สมศรี เรยี บรอ้ ย SA
311 วนั เพญ็ เดอื นเพญ็ DB
458 วนั วสิ า แสงขา
555
151
คำส่งั INSERT
1.2 เพ่ิมข้อมลู หลำยรำยกำร
INSERT INTO Staff
VALUES (‘555’,‘วันวสิ า แสงขา’,‘DB’),
(‘999’,‘วนั ชยั มีโชค’,‘DB’),;
คาสง่ั INSERT เพียงคาสง่ั เดยี วน้ี เพิม่ ข้อมูลถงึ สองรายการในตาราง
Staff แต่ละรายการที่เพิ่มกาหนดไว้ภายในเครื่องหมายวงเลบ็ คั่นระหว่างวงเลบ็
ดว้ ยเครอื่ งหมายจลุ ภาค ไดผ้ ลเปน็ ตารางทม่ี ี 6 รายการ จากเดิม 4 รายการ
152
คำสัง่ INSERT
Staff sname pcode
DB
sid สามารถ ขาดี PR
สมชอบ รอบคอบ PR
“ 205 สมศรี เรยี บรอ้ ย SA
310 วนั เพญ็ เดอื นเพญ็ DB
311 วนั วสิ า แสงขา DB
458 วนั ชยั มโี ชค
555
999
153
คำส่ัง INSERT
1.3 เพ่ิมขอ้ มลู ไมค่ รบทุกคอลมั น์
INSERT INTO Staff(sid, pcode)
VALUES (‘555’, ‘DB’);
คาสงั่ INSERT นี้ มคี วามแตกตา่ งจากข้างตน้ ท่มี เี ครอ่ื งหมายวงเล็บที่
กาหนดชื่อคอลมั น์หลงั ชือ่ ตาราง นน่ั คอื เม่อื เพ่มิ ขอ้ มลู โดยระบุค่าไม่ครบทกุ
คอลัมน์ จะตอ้ งกาหนดช่ือคอลมั น์ เพอื่ บนั ทึกขอ้ มูลลงคอลมั นต์ ามลาดบั ไดอ้ ย่าง
ถกู ตอ้ ง ตารางจะมีรายการที่เพม่ิ ข้ึน
154
คำส่งั INSERT
Staff sname pcode
DB
sid สามารถ ขาดี PR
205 สมชอบ รอบคอบ PR
310 สมศรี เรยี บรอ้ ย SA
311 วนั เพญ็ เดอื นเพญ็ DB
458
555
155
คำสั่ง DELETE
2. กำรลบข้อมูล
ภาษา SQL ได้กาหนดคาส่งั DELETE ในการลบข้อมลู จากตาราง
2.1 ลบข้อมลู ทัง้ หมดจากตาราง
DELETE FROM Staff;
คาสงั่ DELETE จะลบข้อมลู ท้ังหมดทกุ รายการจากตาราง Staff
ภายหลังการทางานตามคาสง่ั น้ี ตาราง Staff จะไม่มีขอ้ มูลอยูอ่ ีกเลย แต่โครงสร้าง
ของตารางทส่ี รา้ งข้นึ จากคาส่ัง CREATE TABLE ยังคงอยู่
156
คำสง่ั DELETE
2.2 ลบข้อมลู บางรายการจากตาราง
DELETE FROM Staff;
WHERE pcode = ‘PR’;
คาสั่ง DELETE นี้ มกี ารกาหนดเงือ่ นไข โดยใชส้ ่วนของคาสัง่ WHERE
เช่นเดียวกบั ทใี่ ช้ในคาสง่ั สอบถามขอ้ มลู SELECT ดังน้นั จงึ ลบข้อมูลจากตาราง
Staff เฉพาะรายการทีเ่ ปน็ ไปตามเงื่อนไขท่ีกาหนด คอื pcode เปน็ ‘PR’ ซ่งึ มี 2
รายการ ไดผ้ ลเปน็ ตารางทค่ี งเหลือเพยี ง 2 รายการ
157
คำสง่ั DELETE
Staff sname pcode
DB
sid สามารถ ขาดี SA
205 วนั เพญ็ เดอื นเพญ็
458
158
คำสง่ั UPDATE
3. กำรปรบั ปรุงขอ้ มูล
การปรบั ปรงุ แก้ไขข้อมลู ทม่ี อี ยแู่ ลว้ ในตาราง สามารถทาไดโ้ ดยใชค้ าสงั่ UPDATE
3.1 ปรับปรงุ ทกุ รายการ
UPDATE PositionRate
SET rate = rate + 200;
คาสงั่ UPDATE มีวตั ถปุ ระสงค์ในการปรับปรงุ ข้อมลู ทกุ รายการในตาราง
PositionRate โดยปรับปรุงคอลัมน์ rate ให้มคี า่ เพ่ิมขน้ึ 200 จากเดมิ ทาให้คอลัน์ rate
ในตารางนปี้ รบั ปรุง
159
คำสง่ั UPDATE
PositionRate posname rate
Database designer 2400
pcode Program m er 1200
DB System Analyst 2200
PR
SA
160
คำสง่ั UPDATE
3.2 ปรับปรงุ บางรายการ
UPDATE PositionRate
SET rate = rate + 200;
WHERE pcode = ‘PR’;
คาสงั่ UPDATE นี้ มวี ัตถปุ ระสงค์ เพื่อปรบั ปรุงข้อมลู ในตาราง
PositionRate โดยปรบั ปรงุ คอลมั น์ rate ให้มีคา่ เพม่ิ ขึน้ 200 จากเดมิ เฉพาะ
รายการที่ มรี หสั ตาแหน่งเป็น ‘PR’ เทา่ น้นั จงึ ทาใหม้ ีการปรับปรุงตารางเพียง
รายการเดยี ว การกาหนดเงอ่ื นไขนัน้ ใชส้ ่วนของคาส่ัง WHERE
161
คำสั่ง UPDATE
“ posname rate 162
Database designer 2200
PositionRate Program m er 1200
System Analyst 2000
pcode
DB
PR
SA
คำสัง่ Select
163
คำส่ัง Select
กำรสอบถำมขอ้ มูล
ผบู้ ริหารฐานข้อมลู หรือผใู้ ช้ฐานข้อมูลสามารถเรียกดูขอ้ มลู ที่มี
ความสัมพนั ธก์ ันจากตารางใดตารางหนึ่งหรือหลายๆ ตารางได้ โดยใช้ภาษา
จดั การขอ้ มูลด้วยคาสงั่ SELECT โดยอาจเลอื กเพียงบางคอลมั น์ หรอื เพียงบาง
รายการท่สี นใจ
164
คำสง่ั Select
1. กำรสอบถำมข้อมูลจำกตำรำงเดยี ว
1) การสอบถามขอ้ มูลอยา่ งงา่ ย
sid sname
205 สามารถ ขาดี
310 สมชอบ รอบคอบ
311 สมศรี เรยี บรอ้ ย
458 วนั เพญ็ เดอื นเพญ็
SELECT sid, sname FROM Staff;
ได้ผลจากคาส่งั สอบถามข้อมูลจากตาราง Staff
165
คำส่งั Select
จะเห็นว่า SELECT เป็นคาสัง่ ท่ใี ช้ในการสอบถามข้อมูลจากตาราง
โดยส่ิงทก่ี าหนดไวห้ ลัง SELECT เปน็ คอลมั น์ที่ตอ้ งการใหแ้ สดงผล ดงั
ตวั อยา่ งขา้ งต้นน้นั ให้แสดงผลคอลัมน์ sid และ sname ใช้เครอ่ื งหมาย
จุลภาค ( , ) ค่นั ถา้ ต้องการระบมุ ากกว่าหน่ึงคอลมั น์ คาสั่ง SELECT ใชค้ ูก่ ับ
FROM เพื่อระบุตารางท่มี ีขอ้ มลู ที่ตอ้ งการบรรจุอยู่ในท่นี คี้ ือตารางพนกั งาน
166
คำส่ัง Select
ตวั อย่างตอ่ ไปนี้เปน็ การสอบถามขอ้ มลู ทกุ คอลมั น์ที่มีในตาราง โดยใชเ้ ครื่องหมาย * ซึ่งหมายถงึ ทุก
คอลมั น์ของตาราง
SELECT * FROM Project;
pid pname
72 ไลฟ์ คอนโด
85 คลนื่ ลกู ใหม่
167
คำสงั่ WHERE
2) กำรสอบถำมข้อมูลแบบมเี งื่อนไข
ในการสอบถามข้อมลู ผู้ใช้อาจสอบถามข้อมลู เพยี งบางรายการจากตาราง โดยใช้ส่วนของ
คาส่ัง WHERE เพ่ิมข้นึ เพือ่ การกาหนดเงื่อนไข ดังตัวอยา่ งต่อไปนี้
SELECT posname, rate
FROM PositionRate
WHERE rate > 1000;
168
คำส่ัง WHERE
คาส่งั ขา้ งตน้ มสี ว่ นของคาสัง่ WHERE เพมิ่ ขนึ้ จากเดมิ ซงึ่ ใช้
สาหรบั กาหนดเงอื่ นไขในการสอบถามข้อมลู ในทน่ี ี้เปน็ คาส่ังสอบถามขอ้ มูล
posname และ rate จากตาราง PositionRate โดยกาหนดเงอื่ นไขว่า
สอบถามข้อมูลเฉพาะรายการทม่ี ี rate สูงกว่า 1,000 ซง่ึ มเี พียง 2 รายการท่ี
มีอัตราเปน็ ไปตามเงื่อนไข คือ 2,200 และ 2,000
169
คำสั่ง WHERE rate
2200
posname 2000
Database designer
System Analyst
170
คำสั่ง WHERE
ถา้ หากมีการกาหนดเงอื่ นไขมากกว่าหนึง่ เงื่อนไข ใหใ้ ชแ้ ละ (AND) หรือ (OR) เพ่อื เชื่อมเงอ่ื นไข
เหลา่ นน้ั ดังตวั อย่างตอ่ ไปนี้
“SELECT posname, rate
FROM PositionRate
WHERE rate > 1000 AND rate < 2200;
171
คำสัง่ WHERE
คาสั่งข้างต้น ใช้ AND เพิ่มขึ้นจากเดิม ซ่ึงใช้สาหรับกาหนด
เงื่อนไขมากกว่าหน่ึงเง่ือนไขในการสอบถามข้อมูล นั่นแสดงว่า รายการท่ี
นามาแสดงต้องเป็นไปตามเง่ือนไขท้ังสองท่ีกาหนด ในท่ีนี้เป็นคาส่ังสอบถาม
ข้อมูล posname และ rate จากตาราง PositionRate โดยกาหนดเง่ือนไข
ว่าสอบถามข้อมูลเฉพาะรายการท่ีมี rate สูงกว่า 1,000 และ น้อยกว่า
2,200 ซ่ึงมีเพยี ง 1 รายการทีเ่ ปน็ ไปตามเง่ือนไข
172
คำสัง่ WHERE rate
2000
posname
System Analyst
173
คำสั่ง WHERE 174
3) กำรสอบถำมขอ้ มลู แบบมีกำรจดั ลำดับ
ภาษาสอบถามขอ้ มูล ยงั เอ้อื อานวยใหผ้ ูใ้ ช้สอบถามข้อมลู โดยจดั ลาดบั
ขอ้ มูลตามความตอ้ งการ ว่าต้องการเรียงตามคอลัมนจ์ ากนอ้ ยไปมาก หรือจากมาก
ไปน้อย ดงั ตวั อย่างตอ่ ไปน้ี
SELECT * FROM PositionRate
ORDER BY rate ASC;
จากคาสัง่ ข้างต้น พบวา่ มีสว่ นของคาสั่ง ORDER BY เพมิ่ ข้นึ
ซง่ึ ใช้สาหรับจัดเรยี งข้อมูล ในที่นเ้ี ปน็ การเรียงข้อมลู ตามคอลัมน์ rate โดยเรียงจาก
นอ้ ยไปหามาก จากทรี่ ะบวุ า่ ASC (ascending) ถา้ ต้องการเรียงจากมากไปหานอ้ ย
ใช้ DESC (descending)
คำส่ัง WHERE posname rate
Program m er 1000
pcode System Analyst 2000
PR Database designer 2200
SA
DB
175
คำสงั่ WHERE
4) กำรสอบถำมขอ้ มูลพร้อมกบั กำรคำนวณ
SELECT sid, hour-12
FROM Workhour
WHERE hour > 12;
ตวั อยา่ งน้ี มีการคานวณหาช่ัวโมงการทางานล่วงเวลา จาก hour-
12 ซงึ่ มกี ารคานวณไปพร้อม ๆ กบั การสอบถามขอ้ มลู จากตาราง
Workhour โดยมีเง่อื นไขแสดงรายการเฉพาะ ท่ชี ่วั โมงการทางานมากกวา่
12 (hour > 12)
176
คำสั่ง WHERE
sid hour
310 13.00
311 3.00
177
คำส่งั WHERE 178
2. กำรสอบถำมจำกหลำยตำรำง
ภาษา SQL ยอมให้ผูใ้ ชส้ อบถามขอ้ มูลจากหลายตารางได้ ดงั ตวั อยา่ งต่อไปนี้
1) การสอบถามข้อมูลจาก 2 ตาราง
SELECT Workhour.pid,Staff.sname,Workhour.hour
FROM Workhour, Staff
WHERE Workhour.sid = Staff.sid;
ตวั อยา่ งนี้ มีการสอบถามขอ้ มูลจาก 2 ตาราง คอื Workhour และ Staff ใน
การสอบถามข้อมลู จากหลายตาราง ตอ้ งกาหนดเงอื่ นไขเพื่อเชือ่ มโยงหรอื จอยน์ (join)
ตารางเขา้ ดว้ ยกัน โดยพิจารณาคยี อ์ ้างองิ นน่ั คือ sid ในตาราง Workhour เป็นคยี อ์ ้างองิ
ไปยงั ตาราง Staff ซงึ่ มี sid เปน็ คยี ์หลกั จงึ ตอ้ งกาหนดเงื่อนไข ใหส้ องคอลมั นน์ ้ีเทา่ กนั
คำสงั่ WHERE hour
12.00
pid sname 25.00
72 สามารถ ขาดี
72 สมชอบ รอบคอบ 5.00
72 วนั เพญ็ เดอื นเพญ็ 8.00
85 สามารถ ขาดี 15.00
85 สมศรี เรยี บรอ้ ย 3.00
85 วนั เพญ็ เดอื นเพญ็
179
คำสั่ง WHERE
2) แบบสอบถำมจำก 3 ตำรำง
SELECT Project.pname,Staff.sname,Workhour.hour
“ FROM Project, Staff, Workhour
WHERE Workhour.sid = Staff.sid AND
Workhour.pid = project.pid;
180
คำส่งั WHERE
ตัวอยา่ งนี้ มกี ารสอบถามขอ้ มลู จาก 3 ตาราง คอื Project, Staff และ
Workhour ซ่ึงตอ้ งกาหนดเง่ือนไขเพ่ือจอยน์ตารางแบบอีควิจอยน์เขา้ ดว้ ยกนั ที
ละคู่ โดยพจิ ารณาคียอ์ ้างอิง คือ sid ในตาราง Workhour เป็นคียอ์ ้างอิงไปยงั
ตาราง Staff ซ่งึ มี sid เป็นคยี ห์ ลกั และ pid ในตาราง Workhour เป็นคยี ์อา้ งอิง
ไปยงั ตาราง Project ซ่ึงมี pid เป็นคียห์ ลัก จึงตอ้ งกาหนดเงอื่ นไขทง้ั สองเงื่อนไข
181
คำส่งั WHERE
pname sname hour
12.00
ไลฟ์ คอนโด สามารถ ขาดี 25.00
ไลฟ์ คอนโด สมชอบ รอบคอบ
ไลฟ์ คอนโด วนั เพญ็ เดอื นเพญ็ 5.00
คลนื่ ลกู ใหม่ สามารถ ขาดี 8.00
คลน่ื ลกู ใหม่ สมศรี เรยี บรอ้ ย 15.00
คลน่ื ลกู ใหม่ วนั เพญ็ เดอื นเพญ็ 3.00
182
คำสง่ั WHERE 183
3) แบบสอบถำมจำกหลำยตำรำงแบบมีเงื่อนไข
SELECT Project.pname,Staff.sname,Workhour.hour
FROM Project, Staff, Workhour
WHERE Workhour.sid = Staff.sid AND
Workhour.pid = project.pid AND
Workhour.hour > 10;
ตัวอย่างนี้ นอกจากสอบถามขอ้ มูลจาก 3 ตาราง แลว้ ยังมกี ารกาหนด
เง่อื นไขเพ่ิมขนึ้ คือ Workhour.hour > 10 ดังนั้น จงึ ตอ้ งกาหนดเง่อื นไขเพ่อื เชือ่ มโยง
ตารางเขา้ ดว้ ยกันทลี ะคู่ แลว้ ยงั เพมิ่ เง่อื นไขดังท่กี ลา่ วมาแล้วดว้ ย ทาให้ได้ผลลัพธเ์ พียง
3 รายการ
คำส่ัง WHERE
pname sname hour
12.00
ไลฟ์ คอนโด สามารถ ขาดี 25.00
ไลฟ์ คอนโด สมชอบ รอบคอบ 15.00
คลน่ื ลกู ใหม่ สมศรี เรยี บรอ้ ย
184
คำสง่ั WHERE
3. แบบสอบถำมและกำรใช้ฟังก์ชัน
ภาษา SQL ยังมีฟงั กช์ นั ท่ีกาหนดไว้ เพ่อื อานวยความสะดวกให้ผใู้ ชใ้ ช้ฟงั กช์ ันเหล่าน้รี ว่ มกับ
การสอบถามข้อมลู จากตาราง ดงั ตัวอย่างต่อไปนี้
1) ฟังกช์ ันนับ ใช้ฟังก์ชนั COUNT เพ่อื นบั จานวนรายการ
SELECT COUNT (*) FROM Project;
185
คำสงั่ WHERE
ฟงั ก์ชนั COUNT ขา้ งตน้ ใช้เพื่อนับจานวนรายการในตาราง Project ทาใหไ้ ด้ผลลพั ธ์
จานวน 2 รายการ
-
2
186
คำส่ัง WHERE
SELECT COUNT(DISTINCT sid)
FROM Workhour;
ตัวอย่างนี้ ใช้ฟังกช์ ัน COUNT ร่วมกบั DISTINCT เพ่อื นบั รายการ
ในตาราง Workhour ท่มี ี sid ไม่ซ้ากัน น่นั คอื sid เดยี วกนั จะนบั เพยี งครั้ง
เดียว ทาใหไ้ ด้ผลลพั ธจ์ านวน 4 รายการ
-
4
187
คำส่ัง WHERE
SELECT COUNT(*)
FROM Workhour
WHERE pid = 72;
ตัวอยา่ งนี้ ใชฟ้ ังกช์ ัน COUNT ร่วมกบั การสอบถามแบบมเี งอื่ นไข
เพ่อื นบั รายการใน ตาราง Workhour ทม่ี ี pid เปน็ 72 ทาให้ไดผ้ ลลัพธ์
จานวน 3 รายการ
-
3
188
คำส่ัง WHERE
2) ฟงั ก์ชันผลรวม ใช้ฟังกช์ ัน SUM เพอ่ื คำนวณผลรวม
SELECT SUM(hour);
“ FROM Workhour
WHERE pid = 72;
ตวั อยา่ งนี้ ใชฟ้ งั กช์ นั SUM หาผลรวมของจานวนชว่ั โมงการทางาน
ท่ที างานให้กับโครงการรหสั 72 ใน ตาราง Workhour ทาให้ไดผ้ ลลัพธ์คอื
42 จาก 12+25+5
189
คำสั่ง WHERE
-
42
190
คำสงั่ WHERE
SELECT pid, SUM(hour);
FROM Workhour
GROUP BY pid;
ตวั อยา่ งนี้ ใช้ฟงั กช์ ัน SUM เพื่อหาผลรวมของจานวนชัว่ โมงการ
ทางาน โดยใชร้ ่วมกบั ส่วนของคาสงั่ GROUP BY นัน่ คอื หาผลรวมตามกลมุ่ ของ
pid ทาให้ไดผ้ ลลัพธ์ของโครงการ 72 เป็น 42 และโครงการ 85 เปน็ 26
191
คำสง่ั WHERE
pid - 42
72 26
85
192
คำสงั่ WHERE
4. แบบสอบถำมรปู แบบอื่น ๆ
1) ใช้ LIKE
SELECT *
FROM Staff
WHERE sname LIKE ‘ส%’;
ตวั อยา่ งน้ี ใช้ LIKE เพ่ือเปรยี บเทียบในการกาหนดเง่อื นไข เพ่อื กาหนดให้
แสดงรายการเฉพาะทม่ี ี sname หรือ ชื่อพนักงานทข่ี น้ึ ตน้ ด้วยตัวอักษร ‘ส’ โดย
ตัวอกั ษรถัดไปจะเปน็ ตัวอักษรอะไรกไ็ ด้
193
คำสั่ง WHERE
sid sname pcode
DB
205 สามารถ ขาดี PR
PR
310 สมชอบ รอบคอบ
311 สมศรี เรยี บรอ้ ย
194
คำสัง่ WHERE
2) ใช้ NULL
SELECT *
FROM Staff
WHERE pcode IS NOT NULL;
ตวั อย่างน้แี สดงการใช้ NULL หรอื คา่ ว่าง เพือ่ เปรียบเทียบในการกาหนด
เงอื่ นไข โดยกาหนดให้แสดงรายการเฉพาะที่มีคา่ pcode หรือ รหัสตาแหน่ง ท่ีไม่
เป็นค่าว่าง ซึง่ ไมม่ ี pcode ในรายการใดท่เี ปน็ คา่ วา่ งเลย
195
คำสั่ง WHERE
sid sname pcode
205 DB
310 สามารถ ขาดี PR
311 สมชอบ รอบคอบ PR
458 สมศรี เรยี บรอ้ ย SA
วนั เพญ็ เดอื นเพญ็
196
8. 3204-2004
โปรแกรมประยุกต์ ระบบจดั การฐานขอ้ มลู
ฐานขอ้ มลู (Database Management System)
เนื้อหำสำระ
1. โปรแกรมฐานขอ้ มูลทีน่ ิยมใช้
“ 2. โปรแกรม Access
3. โปรแกรม FoxPro
4. โปรแกรม SQL
198
โปรแกรมฐำนข้อมูลท่ีนิยมใช้
ซอฟต์แวร์จัดการฐานข้อมลู (database management
software) ซอฟต์แวรจ์ ดั การฐานขอ้ มลู (database management
software) เปน็ ซอฟต์แวร์ทใ่ี ชใ้ นการจดั การฐานข้อมูล ทาใหผ้ ูใ้ ช้
สามารถทางานดา้ นขอ้ มลู ต่าง ๆ เช่น การจัดเกบ็ การแก้ไข การคน้ หา
ขอ้ มูลทาไดส้ ะดวกและการใช้ซอฟตแ์ วร์จัดการฐานข้อมลู จะทาให้ลด
ความซ้าซ้อนขอ้ มูล ตัวอยา่ งซอฟต์แวร์จดั การฐานข้อมูล เชน่ base ของ
OpenOffice.org, microsoft access
199
โปรแกรมฐำนขอ้ มูลทีน่ ยิ มใช้
โปรแกรมจดั การฐานข้อมูล เปน็ โปรแกรมหรือซอฟแวรท์ ี่ช่วย
จัดการข้อมูลหรือรายการต่าง ๆ ท่ีอยู่ในฐานข้อมูไม่ว่าจะเป็นการ
จัดเกบ็ การเรียกใช้ การปรับปรงุ ขอ้ มลู
200