ร า ย วิ ช า ร ะ บ บ ฐ า น ข้ อ มู ล แ ล ะ ก า ร อ อ ก แ บ บ สื่ อ ก า ร เ รี ย น รู้ เ ส ริ ม ทั ก ษ ะ ส ม ร ร ถ น ะ อ า ชี พ (30901-1003) เ รื่ อ ง ภ า ษ า ฐ า น ข้ อ มู ล ครูฐานิสร์ษา กิรัมย์
SELECT* บ ท นำ FROM SUPPLIER; เมื่อเราได้เรียนรู้คำสั่งประเภท Data Definition Language จะเห็นได้ว่าเราสามารถที่จะสร้างฐานข้อมูล และสร้างตารางได้ ผลที่ได้ คือ แล้ว แต่ตารางที่เราสร้างขึ้นเป็นเพียงโครงสร้างหรือตาราง SNO SNAME CITY เปล่าๆ เท่านั้น ยังไม่ได้มีข้อมูลอยู่ภายในตาราง เพราะฉะนั้นใน S1 SERI BANGKOK บทนี้เราจะต้องเรียนรู้เกี่ยวกับภาษา SQL อีกประเภทหนึ่ง คือ S2 WANIDA RAYONG Data Manipulation Language (DML) ซึ่งประกอบไปด้วย S3 SOMCHAI RAYONG คำสั่ง SELECT ,INSERT , UPDATE และ DELETE
วั ต ถุ ป ร ะ ส ง ค์ เ พื่ อ ใ ห้ นั ก ศึ ก ษ า แ ส ด ง เ พื่ อ ใ ห้ นั ก ศึ ก ษ า แ ส ด ง เ พื่ อ ใ ห้ นั ก ศึ ก ษ า ส า ม า ร ถ ค ว า ม รู้ เ กี่ ย ว กั บ ค ว า ม ค ว า ม รู้ เ กี่ ย ว กั บ คำ สั่ ง เขียนคำสั่งinsert update หมายของภาษา SQL insert update delete d e l e t e ข้ อ มู ล ใ น ต า ร า ง ไ ด้ ประเภท DML ข้ อ มู ล ใ น ต า ร า ง ไ ด้
แ บ บ ท ด ส อ บ ก่ อ น เ รี ย น Scanme
การใช้คำสั่งสำหรับการนิยามข้อมูล (DDL) ในการสร้างโครงสร้างของฐานข้อมูล ที่ประกอบด้วย ตารางต่าง ๆ และดัชนีของตาราง ซึ่งตารางที่ถูกสร้างนี้ยังไม่มีข้อมูล การป้อนข้อมูลเข้าไป ในตารางเพิ่มเติมข้อมูล เรียกค้นข้อมูล ลบแถวข้อมูล จะต้องใช้คำสั่งสำหรับการจัดการข้อมูล หรือเรียก ย่อ ๆ ว่า DML คำสั่งต่าง ๆ ที่มีในภาษาสำหรับการจัดการข้อมูล มีดังนี้
7.4.1 คำสั่งเรียกค้นข้อมูล คำสั่ง SELECT เป็นคำสั่งที่ใช้ในการเรียกข้อมูลจากฐานข้อมูลตามที่ผู้ใช้ต้องการ มีรูปแบบดังนี้ รูปแบบ *|DISTINCT เป็นการสั่งให้เลือกข้อมูลที่ต้องการทั้งหมด ซึ่งสามารถใช้เครื่องหมาย * แทนได้แต่ถ้าใช้ DISTINCT จะเลือกข้อมูลที่เป็นไปตามเงื่อนไขเฉพาะทูเพิลที่มีข้อมูลไม่ซ้ำกัน TARGET LIST เป็นชื่อของแอตทริบิวต์ และนิพจน์ที่ต้องการให้แสดงค่าออกมาตามที่ต้องการ
FROM <TABLE NAME>[<ALIASES.] เป็นการระบุถึงชื่อรีเลชันที่ต้องการให้ดึงข้อมูลออกมาส่วน ALIASES คือชื่อของรีเลชันที่ตั้งขึ้นใหม่ [WHERE <PREDICATE>] หมายถึง เงื่อนไขที่ระบุขึ้นเพื่อดึงข้อมูลของทูเพิลตามที่ต้องการในส่วนของ เงื่อนไขนี้ [GROUP BY <COLUMN LIST>] [HAVING PREDICATE] เป็นการจัดกลุ่มตามเงื่อนไขที่ระบุและ ภายใต้การจัดกลุ่มก็จะมีเงื่อนไขที่จะให้แสดงผลที่เกิดจากจัดกลุ่ม โดยใช้ HAVING [ORDER BY <COLUMN LIST>] เป็นการระบุให้เรียงลำดับข้อมูลตามแอตทริบิวต์ที่ต้องการถ้ามี ASC ต่อท้ายชื่อของแอตทริบิวต์เป็นการเรียงจากน้อยไปหามาก และถ้าเป็น DESC เป็นการเรียงจากมาก ไปหาน้อย ในการเรียกดูข้อมูล ข้อมูลที่ใช้เรียกดูจากตารางต่าง ๆ อาจจะไม่มีเงื่อนไขหรือมีระบุเงื่อนไขโดยเงื่อนไข ที่ระบุหลัง WHERE สามารถทำได้หลายรูปแบบ รายละเอียดที่เกี่ยวข้องกับการเรียกดูข้อมูลมีดังนี้ 1. การเรียกดูข้อมูลแบบไม่มีเงื่อนไข อาจจะเป็นการเรียกดูข้อมูลทั้งตาราง หรือเรียกดูเพียงบาง แอตทริบิวต์ หรือการเรียกดูข้อมูลโดยการให้จัดเรียงข้อมูล
ตัวอย่าง ให้แสดงข้อมูลทั้งหมดของตาราง SUPPLIER SELECT* FROM SUPPLIER; ผลที่ได้ คือ SNO SNAME CITY S1 SERI BANGKOK S2 WANIDA RAYONG S3 SOMCHAI RAYONG S4 ORAPIN BANGKOK S5 TANACHOTE PATUMTANE
ตัวอย่าง ให้แสดงรหัสสินค้า และชื่อสินค้า SELECT PNO, PNAME FROM PRODUCT; ผลที่ได้ คือ PNO PNAME P1 PEN P2 TABLE P3 DESK P4 BAG P5 CHAIR P6 TELEPHONE
2. การเรียกดูข้อมูลแบบมีเงื่อนไข เป็นการระบุชื่อแอตทริบิวต์ที่ต้องการระบุเป็นเงื่อนไข และข้อมูล เฉพาะในอนุประโยค WHERE โดยการระบุเงื่อนไขจะนำโอเปอเรเตอร์ต่าง ๆ เข้ามาใช้ในการแสดงเงื่อนไข โอเปอเรเตอร์ดังกล่าว มีดังนี้ (1) การเรียกดูข้อมูลแบบมีเงื่อนไขโดยใช้โอเปอเรเตอร์ทางตรรกะและโอเปอเรเตอร์บูลีน โอเปอเร เตอร์ทางตรรกะ (Logical Operator) ใช้แสดงการเปรียบเทียบค่าของข้อมูล
ส่วนโอเปอเรเตอร์บูลีน (Boolean Operator) ใช้สำหรับการเรียกดูข้อมูลที่มีเงื่อนไขมากกว่าหนึ่ง เงื่อนไข เช่น AND หรือ OR หรือใช้ในการปฏิเสธเงื่อนไข เช่น NOT ตัวอย่าง ให้แสดงรหัสผู้ผลิต สำหรับผู้ผลิตที่อยู่ RAYONG หรือ BANGKOK SELECT SNO FROM SUPPLIER WHERE CITY = ‘RAYONG’ OR ‘BANGKOK’; ผลที่ได้ คือ SNO S1 S2 S3 S4
(2) การเรียกดูข้อมูลแบบมีเงื่อนไขโดยใช้โอเปอเรเตอร์ของ SQL โอเปอเรเตอร์ของ SQL ที่ใช้ในการ กำหนดเงื่อนไขของข้อมูลในอนุประโยค WHERE มีดังนี้ โอเปอเรเตอร์ BETWEEN…AND… เป็นโอเปอเรเตอร์ที่กำหนดเงื่อนไขของแอตทริ-บิวต์เป็นค่า ระหว่างสองค่า โดยโอเปอเรเตอร์ BETWEEN จะแสดงต่อจากชื่อแอตทริบิวต์ที่ถูกกำหนดให้เป็นเงื่อนไข ตัวอย่าง ให้แสดงข้อมูลแอตทริบิวต์ SNO PNO และ QTY จากรีเลชัน ORDER ที่ส่งสินค้าระหว่าง 300 และ 500 หน่วย SELECT SNO, PNO, QTY FROM ORDER WHERE QTY BETWEEN 300 AND 500;
ผลที่ได้ คือ SNO PNO QTY S1 P3 300 S2 P1 300 S2 P2 400 S4 P2 500 S4 P4 300 S4 P5 400 โอเปอเรเตอร์ IN เป็นโอเปอเรเตอร์ที่ใช้กับเงื่อนไขของคอลัมน์ที่ต้องการระบุเงื่อนไขเป็นกลุ่มของ ข้อมูล โดยโอเปอเรเตอร์ IN จะแสดงต่อท้ายชื่อแอตทริบิวต์ที่ถูกระบุเป็นเงื่อนไข และกลุ่มของข้อมูลที่เป็น ข้อมูลเฉพาะของแอตทริบิวต์ที่เป็นเงื่อนไขนี้ จะอยู่ในวงเล็บ ( ) และมีเครื่องหมายคอมม่า , คั่น
ตัวอย่าง ให้แสดงรายละเอียดของรหัสและชื่อผู้ผลิต ที่อยู่ BANGKOK หรือ RAYONG SELECT SNO, SNAME FROM SUPPLIER WHERE CITY IN (‘BANGKOK’, ‘RAYONG’); ผลที่ได้ คือ SNO SNAME S1 SERI S2 WANIDA S3 SOMCHAI S4 ORAPIN
โอเปอเรเตอร์ LIKE เป็นโอเปอเรเตอร์ที่ใช้ในการค้นหาข้อมูลของคอลัมน์ที่เก็บข้อมูลประเภทตัวอักษร เท่านั้น (CHARACTER) โดยที่ยังไม่ทราบค่าที่แน่นอนทั้งหมดของข้อมูลที่จะค้นหา หรือรู้เพียงบางตัวอักษร เท่านั้น โดยข้อมูลบางส่วนที่ใช้ในการค้นหาพร้อมกับสัญลักษณ์ทั้งสองนี้จะต้องมีเครื่องหมาย ‘ ’ กำกับ เสมอ ความหมายของสัญลักษณ์ทั้งสองเป็นดังนี้ เช่น พนักงานที่มีชื่อขึ้นต้นด้วย T จะเขียนเงื่อนไข ว่า WHERE EMPNAME LIKE T%’พนักงานที่มีชื่อ ขึ้นต้นด้วย S และมีความยาวรวม 7 ตัวอักษร จะเขียนเงื่อนไขว่า WHERE EMPNAME LIKE ‘S’
ตัวอย่าง ให้แสดง PNAME ที่ขึ้นต้นด้วยอักษร C SELECT* FROM PRODUCT WHERE PNAME LIKE ‘C%’ ; ผลที่ได้ คือ PNO PNAME COLOR CITY P5 CHAIR BLUE RAYONG (3) การเรียกดูข้อมูลจากรีเลชันมากกว่าหนึ่งรีเลชัน คำสั่ง SELECT ยังสามารถใช้ในการเรียกดูข้อมูล หรือเชื่อมโยงข้อมูลจากตารางมากกว่าหนึ่งตาราง หรือที่เรียกว่า JOIN อาจจะเรียกดูข้อมูลแบบมีเงื่อนไข หรือไม่มีเงื่อนไขก็ได้ Equi Join เป็นการเชื่อมโยงข้อมูลจากตารางหลายตาราง ซึ่งตารางที่จะเชื่อมโยงกันจะต้องมี แอตทริบิวต์ที่จะอ้างอิงกันได้ โดยเงื่อนไขที่ระบุจะเปรียบเทียบกันโดยใช้เครื่องหมาย = (เท่ากับ)
ตัวอย่าง ให้แสดงข้อมูลของรีเลชัน SUPPLIER และ PRODUCT ที่อยู่ในจังหวัดเดียวกัน SELECT S.*, P.* FROM SUPPLIER S, PRODUCT P WHERE S.CITY = P.CITY; ผลที่ได้ คือ
Non–Equi Join เป็นการเชื่อมโยงข้อมูล โดยเงื่อนไขที่แสดงไม่ใช่เครื่องหมาย = (เท่ากับ) แต่อาจ เป็น > < > = < = <> หรือ between…and หรือ in เป็นต้น ตัวอย่าง ให้แสดงข้อมูลของผู้ผลิตและจำนวนคำสั่งซื้อระหว่าง 400 ถึง 500 อัน SELECT SNO, SNAME, PNO, QTY FROM SUPPLIER S, ORDER O WHERE QTY BETWEEN 400 AND 500 AND S.SNO = O.SNO; ผลที่ได้ คือ SNO SNAME PNO QTY S2 WANIDA P2 400 S4 ORAPIN P4 500 S4 TANACHOTE P5 400
Self Join เป็นการเชื่อมโยงข้อมูลโดยใช้ตารางเดียวกัน และตั้งชื่อให้ตารางเป็นชื่ออีกชื่อหนึ่งทั้งนี้ เพื่อประโยชน์ในการเชื่อมโยงข้อมูล ตัวอย่าง ให้แสดงรหัสผู้ขายที่ตั้งอยู่ในจังหวัดเดียวกัน SELECT S1.SNO, S2.SN0 FROM SUPPLIER S1, SUPPLIER S2 WHERE S1.CITY = S2.CITY AND S1.SNO <> S2.SNO; ผลที่ได้ คือ S1.SNO S2.SNO S3 S2 S4 S1 Outer Join เป็นการเชื่อมโยงข้อมูลในลักษณะที่แสดงข้อมูลที่ไม่เป็นไปตามเงื่อนไขที่กำหนดไว้ออก มาด้วย ทั้งนี้เพื่อประโยชน์ในการดูข้อมูลที่ครบถ้วนมากขึ้น ซึ่งระบบจัดการฐานข้อมูลบางชนิดมีคำสั่ง SQL ที่สามารถทำการเชื่อมโยงเพื่อเรียกข้อมูลในลักษณะนี้ได้ เช่น ORACLE หรือ ACCESS
ตัวอย่าง ให้แสดงรหัสผู้ขาย ชื่อผู้ขาย รหัสสินค้า จำนวนสินค้าที่ถูกจัดส่ง รหัส และชื่อผู้ขายที่ไม่เคย จัดส่งสินค้าเลย โดยสมมติให้รีเลชัน SUPPLIER เป็นดังนี้
คำสั่ง SQL ใน ORACLE ที่ทำการเชื่อมโยงเพื่อเรียกดูข้อมูลในลักษณะนี้ จะใช้โอเปอเรเตอร์ที่เป็น เครื่องหมาย + และมีวงเล็บเปิดและปิดกำกับ (+) โดยจะแสดงต่อท้ายคอลัมน์ที่ใช้เป็นเงื่อนไขในการ เชื่อมโยงตารางที่ไม่มีข้อมูล SELECT SNO, SNAME, PNO, QTY FROM SUPPLIER S, ORDER O WHERE O.SNO = S.SNO (+) ผลลัพธ์ที่ได้ คือ SNO SNAME PNO QTY S1 SERI P1 100 S1 SERI P2 200 S2 WANIDA P1 200 S2 WANIDA P2 100 S3 SOMCHAI P2 500 S4 ORAPIN P3 200
S5 TANACHOTE P5 300 S4 TANACHOTE P6 100 S6 VARUMPORN (4) การเรียกข้อมูลโดยใช้ฟังก์ชันที่เกี่ยวกับการรวม (Built–in Functions) ฟังก์ชันที่ใช้ใน SQL ประกอบด้วย AVG (ค่าเฉลี่ย) COUNT (นับจำนวน) MAX (ค่าสูงสุด) MIN (ค่าต่ำสุด) และ SUM (ผล รวม) ฟังก์ชันทั้งห้านี้สามารถใช้ในคำสั่ง SELECT หรืออนุประโยค HAVING
นอกเหนือจากการใช้ฟังก์ชันเกี่ยวกับการรวมแล้ว การแสดงผลในลักษณะของการจัดกลุ่มข้อมูลยัง สามารถใช้ GROUP BY เพื่อสั่งให้จัดกลุ่มตามแอตทริบิวต์ที่ต้องการให้จัดกลุ่มเฉพาะลงไป เช่น การให้ แสดงยอดรวมของการส่งสินค้าตามรหัสผู้ผลิตรายใดรายหนึ่ง เป็นต้น
ตัวอย่าง ให้แสดงผลรวมของจำนวนที่ขายของสินค้ารหัส P2 SELECT SUM (QTY) FROM ORDER WHERE PNO = ‘P2’ ; ผลที่ได้ คือ : : : 1200
ตัวอย่าง ให้แสดงรหัสสินค้าที่มีผู้ขายมากกว่า 1 คน SELECT PNO FROM ORDER GROUP BY SNO HAVING COUNT (*) > 1 ; ผลที่ได้ คือ PNO P1 P2 P4 P5
(5) การเรียกดูข้อมูลโดยมีข้อคำถามย่อยเงื่อนไขในอนุประโยค WHERE สามารถจะใช้คำสั่ง SELECT เป็นข้อคำถามย่อย (Sub Query) เพื่อเรียกดูข้อมูลได้ ในกรณีที่ผลของข้อมูลเรียงจากข้อคำถาม ย่อยมีค่ามากกว่าหนึ่งค่า ในการระบุเงื่อนไขอาจจะใช้โอเปอเรเตอร์ดังต่อไปนี้ในการแสดงเงื่อนไข โอเปอเรเตอร์ ANY เป็นโอเปอเรเตอร์ที่ใช้ในการเปรียบเทียบค่าของแอตทริบิวต์หนึ่ง ๆ ว่ามีค่าตรง กับค่าใดค่าหนึ่งของผลลัพธ์แต่ละค่า ที่ได้จากข้อคำถามย่อยที่ระบุเป็นเงื่อนไขในอนุประโยค WHERE หรือไม่ และจะใช้ร่วมกับโอเปอเรเตอร์ทางตรรกะ เช่น = > < > = < = <> เป็นต้น โอเปอเรเตอร์ ALL เป็นโอเปอเรเตอร์ที่ใช้ในการเปรียบเทียบค่าของแอตทริบิวต์หนึ่งว่ามีค่าตรงกับ ทุกค่าของผลลัพธ์ที่ได้จากข้อคำถามย่อย และจะใช้ร่วมกับโอเปอเรเตอร์ทางตรรกะ เช่น = > < > = < = <> เป็นต้น โอเปอเรเตอร์ EXISTS เป็นโอเปอเรเตอร์ที่ใช้เพื่อแสดงว่าใช่ (True) หรือไม่ใช่ (False) ออกมา หาก ข้อคำถามย่อยในอนุประโยค WHERE มีค่าตรงกับค่าที่อ่านได้จากข้อคำถามของ SELECT ที่อยู่ด้านนอก ถ้าเป็นจริงก็ให้แสดงข้อมูลออกมา ถ้าไม่จริงก็จะไม่แสดงค่าของข้อมูลนั้นออกมา
ตัวอย่าง ให้แสดงชื่อผู้ผลิตที่ไม่ได้ขาย P2 SELECT SNAME FROM SUPPLIER WHERE NOT EXUSTS (SELECT SNO FROM ORDER WHERE SUPPLIER.SNO = ORDER.SNO AND PNO = ‘P2’); ผลที่ได้ คือ SNAME TANACHOTE
ตัวอย่าง ให้แสดงรหัสผู้ผลิต รหัสสินค้า และจำนวนสินค้าที่ขายของผู้ผลิตอื่นที่มีจำนวนการขายสูง กว่ารหัสผู้ผลิต S1 SELECT SNO, PNO, QTY FROM ORDER WHERE QTY > ALL (SELECT DISTINCT QTY FROM ORDER WHERE SNO = ‘S1’); ผลที่ได้ คือ SNO PNO QTY S2 P2 400 S4 P2 500 S4 P5 400
7.4.2 คำสั่งเพิ่มแถวข้อมูล คำสั่ง INSERT เป็นคำสั่งที่ใช้ในการใส่ข้อมูลทูเพิลลงในตารางหนึ่ง โดยการเพิ่มข้อมูลจะเพิ่มได้ทีละ หนึ่งทูเพิลต่อครั้ง มีรูปแบบดังนี้ รูปแบบ TABLE NAME คือ ชื่อของตารางซึ่งจะมีการเพิ่มข้อมูล COLUMN LIST คือ ชื่อของแอตทริบิวต์ที่ต้องการเพิ่มข้อมูลลงไป ถ้าตารางมีมากกว่า 1 แอตทริบิวต์ให้ระบุโดยเครื่องหมาย , คั่น VALUE LIST คือ ค่าของแอตทริบิวต์ที่ต้องการเพิ่มเข้าไปในรีเลชันและถ้าเป็นข้อมูลประเภทตัวอักษร จะต้องมีเครื่องหมาย ‘ ’ กำกับ
ตัวอย่าง ให้ใส่ข้อมูลในตาราง PRODUCT INSERT INTO PRODUCT (PNO, PNAME, COLOR, CITY) VALUES (‘P1’, ‘PEN’, ‘RED’, ‘BANGKOK’); 7.4.3 คำสั่งปรับปรุงแถวข้อมูล คำสั่ง UPDATE เป็นคำสั่งที่ใช้ในการเปลี่ยนแปลงข้อมูลในแต่ละรีเลชัน มีรูปแบบดังนี้ รูปแบบ
TABLE NAME หมายถึง ตารางที่ข้อมูลต้องการเปลี่ยนแปลงเป็นค่าใหม่ COLUMN NAME หมายถึง ชื่อของแอตทริบิวต์ที่ต้องการเปลี่ยนค่าใหม่ VALUE หมายถึง ค่าใหม่ของแอตทริบิวต์ที่จะเปลี่ยนข้อมูล CONDITION หมายถึง เงื่อนไขของข้อมูลที่จะนำมาปรับปรุง ตัวอย่าง ให้ปรับสินค้ารหัส P2 ให้มีสีเป็น YELLOW UPDATE PRODUCT SET COLOR = ‘YELLOW’ WHERE PNO = ‘P2’ ;
7.4.4 คำสั่งลบแถวข้อมูล คำสั่ง DELETE เป็นคำสั่งที่ใช้ในการลบข้อมูลในแต่ละทูเพิล มีรูปแบบดังนี้ รูปแบบ ตัวอย่าง ให้ลบผู้ผลิตที่มีรหัส S5 DELETE FROM SUPPLIER WHERE SNO = ‘S5’ ;
แ บ บ ท ด ส อ บ ห ลั ง เ รี ย น Scanme
จ บ ก า ร นำ เ ส น อ
Search
Read the Text Version
- 1 - 34
Pages: