(Data Manipulation Language-DML)
เมื่อมีการสร้างรีเลชันต่างๆในฐานข้อมูลเชิงสัมพันธ์โดยใช้ภาษา DDL แล้ว หากต้องการเรียกข้อมูลมาใช้หรือมีการเพิ่มเติมข้อมูลต่างๆซึ่ง SQL ที่เป็น DML ที่มีอยู่ใน DBMS ประกอบด้วย 4 คำสั่ง คือ
คำสั่ง
|
ความหมาย
|
SELECT | เรียกข้อมูลในตาราง |
INSERT | เพิ่มแถวข้อมูลลงไปในตาราง |
UPDATE | ปรับปรุงแถวข้อมูลในตาราง |
DELETE | ลบแถวข้อมูลในตาราง |
คำสั่งเรียกค้นข้อมูล (SELECT )
คำสั่ง SELECT เป็นคำสั่งการเรียกดูข้อมูล หรือค้นหาข้อมูล ตามเงื่อนไขที่เราระบุ รูปแบบ SELECT ที่เขียนได้ง่ายที่สุด ประกอบด้วยส่วนประกอบหลักของคำสั่ง 3 ส่วน คือ
รูปแบบ
ตัวอย่าง มีข้อมูลตามตาราง GOODS (สินค้า)SELECT < ชื่อคอลัมน์ที่ต้องการดูข้อมูล >
FROM < ชื่อตาราง >
WHERE < เงื่อนไขตามที่ระบุ >
PID
|
PNAME
|
AMOUNT
|
USED
|
111
|
shirt
|
52
|
10
|
112
|
pants
|
23
|
15
|
113
|
shorts
|
45
|
32
|
114
|
shoes
|
62
|
55
|
ผลลัพธ์SELECT PNAME, USED
FROM GOODS;
PNAME
|
USED
|
shirt
|
10
|
pants
|
15
|
shorts
|
32
|
shoes
|
55
|
โอเปอเรเตอร์
การเรียกค้นข้อมูลอย่างมีเงื่อนไขตามหลักของภาษา SQL จะอยู่หลังคำสั่ง WHERE ซึ่งสามารถเปรียบเทียบตามโอเปอเรเตอร์ ในภาษา SQL อาจแบ่งโอเปอเรเตอร์ ได้เป็น 4 กลุ่ม คือ
1. โอเปอเรเตอร์คณิตศาสตร์(Arithmetic Operators)
2. โอเปอเรเตอร์เปรียบเทียบ(Comparison Operators)
3. โอเปอเรเตอร์ตรรกะ(Logical Operators)
1. โอเปอเรเตอร์คณิตศาสตร์(Arithmetic Operators) ได้แก่ operators ที่เป็น plus (+) minus (-), divide (/), multiply (*)
- โอเปอเรเตอร์ Plus (+) เป็นคำสั่งที่ใช้รวมค่า 2 ค่าเข้าด้วยกัน ดังตัวอย่างต่อไปนี้ตัวอย่าง จากตาราง GOODS ถ้าต้องการเพิ่มจำนวนสินค้าแต่ละอย่างอีก 10 โดยให้ชื่อคอลัมน์ใหม่ว่า RAMOUNTจะใช้คำสั่งดังนี้
SELECT PID, PNAME, AMOUNT, (AMOUNT + 10) As RAMOUNTผลลัพธ์
FROM GOODS;
PID
|
PNAME
|
AMOUNT
|
RMOUNT
|
111
|
shirt
|
52
|
62
|
112
|
pants
|
23
|
33
|
113
|
shorts
|
45
|
55
|
114
|
shoes
|
62
|
72
|
- โอเปอร์เรเตอร์ Minus (-) คำสั่ง Minus คือ การนำข้อมูลของคอลัมน์หนึ่งไปลบออกจากข้อมูลของอีกคอลัมน์หนึ่ง
ตัวอย่าง ถ้าต้องการนำคอลัมน์ AMOUNT ลบออกจากคอลัมน์ USED แล้วนำผลลัพธ์ที่ได้แสดงในคอลัมน์ BALANCE โดยใช้คำสั่งดังนี้
ผลลัพธ์SELECT PID, PNAME, (AMOUNT - USED ) As BALANCE
FROM GOODS;
PID
|
PNAME
|
BALANCE
|
111
|
shirt
|
42
|
112
|
pants
|
8
|
113
|
shorts
|
13
|
114
|
shoes
|
7
|
- โอเปอร์เรเตอร์ Divide (/) เป็นคำสั่งที่ใช้ในการหารข้อมูลดังตัวอย่าง เช่น ต้องการหารคอลัมน์AMOUNT ด้วย 2 สามารถใช้คำสั่ง
ผลลัพธ์SELECT PID, PNAME, (AMOUNT/2) as DIVIDE
FROM GOODS;
PID
|
PNAME
|
DEVIDE
|
111
|
shirt
|
26
|
112
|
pants
|
11.5
|
113
|
shorts
|
22.5
|
114
|
shoes
|
31
|
- โอเปอร์เรเตอร์ Multiply (*) เป็นคำสั่งที่ใช้ในคูณค่าของข้อมูลในคอลัมน์
ตัวอย่าง ตาราง GOODS ถ้าต้องการคูณคอลัมน์ AMOUNT ด้วย 2 ให้ได้ผลลัพธ์เป็นข้อมูลในคอลัมน์ใหม่ที่ชื่อ MULTIPLE จะใช้คำสั่งดังนี้
SELECT PID, PNAME, (AMOUNT*2) as MULTIPLE
FROM GOODS;
ผลลัพธ์
PID
|
PNAME
|
DEVIDE
|
111
|
shirt
|
104
|
112
|
pants
|
46
|
113
|
shorts
|
90
|
114
|
shoes
|
124
|
2. โอเปอรเรเตอร์เปรียบเทียบ (Comparison Operators เป็น Operator ที่จะให้ค่าออกมา 3 ค่า คือ ถูก (TRUE) ผิด (FALSE) ไม่รู้ (Unknow) การไม่รู้หมายถึง ถ้านำข้อมูลที่มีค่าไปเปรียบเทียบกับข้อมูลที่เป็น NULL ตัวเปรียบเทียบจะให้ค่าไม่รู้
ตัวอย่าง ในตาราง STUDENT
SID
|
SNAME
|
SCORE
|
211
|
SUDA
|
86
|
212
|
WANCHAI
| |
213
|
APICHART
|
79
|
214
|
SOMJAI
|
92
|
หรือSELECT *
FROM STUDENT
WHERE SCORE IS NULL;
ผลลัพธ์SELECT *
FROM STUDENT
WHERE SCORE = NULL;
SID
|
SNAME
|
SCORE
|
212
|
WANCHAI
|
ถ้าใช้คำสั่งว่า IS NOT NULL จะหมายความว่าแถวข้อมูลใดที่มี SCORE ไม่เป็นค่าว่าง ให้แสดง SNAME ในแถวข้อมูลนั้นออกมา
3 โอเปอรเรเตอร์ตรรกะ (Logical Operator) เป็นตัวโอเปอเรเตอร์ที่ใช้ในการเปรียบเทียบ เชื่อมโยงค่า 2 ค่า
- ตัวโอเปอเรเตอร์ AND เป็นตัวโอเปอเรเตอร์ ที่ใช้เชื่อมโยงค่า 2 ค่า โดยถ้าทั้งสองค่ามีค่าเป็นจรืงแล้วจะให้ค่าจริงออกมา แต่ถ้าค่าใดค่าหนึ่งเป็นเท็จแล้วจะให้ค่าเป็นเท็จ
ตัวอย่าง จากตาราง STUDENT
SID
|
SNAME
|
MID
|
FINAL
|
211
|
SUDA
|
42
|
86
|
212
|
WANCHAI
|
53
| |
213
|
APICHART
|
12
|
79
|
214
|
SOMJAI
|
95
|
92
|
ผลลัพธ์
SELECT SNAME
FROM STUDENT
WHERE MID>=50 AND FINAL>=50;
SNAME
|
SOMJAI
|
ผลลัพธ์
SELECT SNAME
FROM STUDENT
WHERE MID>=50 OR FINAL>=50;
SNAME
|
SUDA
|
WANCHAI
|
APICHART
|
SOMJAI
|
SELECT SNAME
FROM STUDENT
WHERE MID>50 AND MID< 90;
ผลลัพธ์
SNAME
|
WANCHAI
|
ผลลัพธ์ี้
SELECT SNAME
FROM STUDENT
WHERE MID BETWEEN 50 AND 90;
SNAME
|
WANCHAI
|
- โอเปอร์เรเตอร์ IN เป็นการกำหนดเซ็ตของสิ่งที่ต้องการค้นหา โดยการใช้กับเงื่อนไขคอลัมน์ที่ต้องการระบุเงื่อนไขเป็นกลุ่มของข้อมูลโดยโอเปอเรเตอร์ IN จะแสดงต่อท้ายชื่อแอททริบิวท์ที่ถูกระบุเป็นเงื่อนไข และกลุ่มของข้อมูลที่เป็นข้อมูลเฉพาะของแอททริบิวท์ที่เป็นเงื่อนไขนี้ จะอยู่ในวงเล็บ ( ) และมีเครื่องหมาย , คั่น
ตัวอย่าง ตาราง STUDENT
SID
|
SNAME
|
PROGRAM
|
211
|
SUDA
|
COMPUTER
|
212
|
WANCHAI
|
BUSINESS
|
213
|
APICHART
|
SCIENCE
|
214
|
SOMJAI
|
COMPUTER
|
ผลลัพธ์SELECT *
FROM STUDENT
WHERE PROGRAM= 'BUSINESS'
OR PROGRAM = 'SCIENCE';
SID
|
SNAME
|
PROGRAM
|
212
|
WANCHAI
|
BUSINESS
|
213
|
APICHART
|
SCIENCE
|
SELECT *
FROM STUDENT
WHERE PROGRAM IN ('BUSINESS ', 'SCIENCE ');
ผลลัพธ์
SID
|
SNAME
|
PROGRAM
|
212
|
WANCHAI
|
BUSINESS
|
213
|
APICHART
|
SCIENCE
|
ฟังก์ชัน
ฟังก์ชันที่ใช้ในภาษา SQLเป็นฟังก์ชัน ซึ่งเก็บประจำไว้กับภาษา SQL คือ
AVG เป็นคำสั่งการหาค่าเฉลี่ยของข้อมูลในคอลัมน์ใดคอลัมน์หนึ่งโดยในคอลัมน์ที่ไม่มีค่าใดบรรจุอยู่ (NULL VALUE)จะไม่นำมาบรรจุอยู่ในการคำนวณ การใช้ฟั่งก์ชั่น AVG จะนำค่าทุกตัวในคอลัมน์มาคำนวณรวมทั้งตัวที่มีค่าซ้ำกันด้วย
COUNT เป็นคำสั่งที่สามารถนับจำนวนของแถวหรือคอลัมน์
MAX เป็นคำสั่งในการหาค่าสูงสุดของข้อมูลของคอลัมน์ใดคอลัมน์หนึ่ง การใช้ MAX กับประเภทของข้อมูลที่เป็นตัวอักขระ ผลของคำสั่งจากคำสั่งจะทำการหาชื่อของผู้ที่มีอักษร (A-Z) ตามลำดับใครที่มีอักษรลำดับมากที่สุดจะถูกแสดงออกมาเพียงแถวเดียว
MIN เป็นคำสั่งในการหาค่าต่ำสุดของข้อมูลของคอลัมน์ใดคอลัมน์หนึ่ง การใช้ MIN กับประเภทของข้อมูลที่เป็นตัวอักขระ ผลของคำสั่งจากคำสั่งจะทำการหาชื่อของผู้ที่มีอักษร (A-Z) ตามลำดับใครที่มีอักษรลำดับน้อยที่สุดจะถูกแสดงออกมาเพียงแถวเดียว
SUM เป็นคำสั่งการหาผลรวมของคอลัมน์ใดคอลัมน์หนึ่ง SUM จะใช้กับตัวเลขเท่านั้น ถ้าใช้ SUM กับตัวอักษรจะเกิด ERROR
ตัวอย่าง ตาราง STUDENT
SID
|
SNAME
|
SCORE
|
211
|
SUDA
|
86
|
212
|
WANCHAI
|
82
|
213
|
APICHART
|
79
|
214
|
SOMJAI
|
92
|
ผลลัพธ์SELECT MAX(SCORE),MIN(SCORE)
FROM STUDENT;
92 และ 79
ตัวอย่าง
ผลลัพธ์SELECT AVG(SCORE)
FROM STUDENT;
84.75
การเรียกดูข้อมูลจากหลายตาราง
คำสั่ง SELECT สามารถใช้ในการเรียกดูข้อมูลหรือเชื่อมโยงข้อมูลจากตารางมากกว่า 1 ตารางหรือที่เรียกว่า JOIN
ตัวอย่าง ตาราง GOODS
PID
|
PNAME
|
AMOUNT
|
USED
|
111
|
shirt
|
52
|
10
|
112
|
pants
|
23
|
15
|
113
|
shorts
|
45
|
32
|
114
|
shoes
|
62
|
55
|
SID
|
SNAME
|
PID
|
S01 |
SUDA
|
111
|
S02 |
WANCHAI
|
112
|
S03 |
APICHART
|
113
|
S04 |
SOMJAI
|
114
|
สมมุติว่าเราต้องการแสดงชื่อsale ที่รับผิดชอบสินค้าประเภทpants และดูปริมาณสินค้าที่ใช้ไป เราสามารถใช้คำสั่ง
SELECT SNAME, USED
FROM GOODS,SALES
WHERE GOODS.PID = SALES.PID
AND PID = 112;
พิจารณาเงื่อนไขที่อยู่หลัง WHERE พบว่ามี 2 เงื่อนไข คือ
OODS.PID = SALES.PID เนื่องจากทั้งตาราง GOODS และตารางSALESมีชื่อคอลัมน์PID จะเขียนเหมือนกัน ดังนั้นเพื่อให้เกิดความแตกต่างระหว่างชื่อคอลัมน์PIDทั้งสอง จึงมีการเติมชื่อตารางลงไปข้างหน้าชื่อคอลัมน์PIDของแต่ละคอลัมน์ เพื่อให้ทราบว่าPIDนี้เป็นคอลัมน์ที่อยู่ในตารางใด
PID = 112เป็นคำสั่งที่กำหนดเงื่อนไขให้แสดงข้อมูลเฉพาะ GODS ซึ่งมีค่า PID = 112
ผลลัพธ์
SNAME
|
USED
|
WANCHAI
|
15
|
การเรียกดูแบบซ้อนกัน ( Subqueries )
เป็นการนำประโยคการเรียกดูข้อมูลใส่อยู่ภายใต้ประโยค ซึ่งมีรูปแบบดังนี้
รูปแบบ
SELECT < ชื่อคอลัมน์ >
FROM < ชื่อตาราง >
WHERE < ชื่อคอลัมน์ > IN
ตัวอย่าง ต้องการแสดงชื่อ sale ทรับผิดชอบวินค้าประเภท pants สามารถใช้คำสั่ง( SELECT < ชื่อคอลัมน์ >
FROM < ชื่อตาราง >
WHERE < ชื่อคอลัมน์ > );
SELECT SNAME
FROM SALES
WHERE PID IN
จากตัวอย่างข้างต้น คำสั่งการเรียกดูข้อมูลคำสั่งในสุด ( ในวงเล็บ ) จะมีการทำงานก่อน( SELECT PID
FROM GOODS
WHERE PNAME = 'pants' );
ผลลัพธ์
SNAME
|
WANCHAI
|
คำสั่งเพิ่มแถวข้อมูล ( INSERT )
การใช้คำสั่ง INSERTมีการเพิ่มข้อมูลทีละแถวโดยระบุค่าข้อมูลของแต่ละคอลัมน์ลงไปในคำสั่ง INSERT โดยตรง และแบบที่มีการใช้คำสั่งค้นหาข้อมูล ( SELECT ) เพื่อดึงกลุ่มข้อมูลซึ่งมีหลายแถว ส่งให้กับคำสั่ง INSERT ทำการเพิ่มข้อมูลลงไปในตาราง
รูปแบบ
ตัวอย่าง ตาราง salesINSERT INTO < ชื่อตารางที่จะเพิ่มข้อมูล >
VALUES < ค่าข้อมูลของแต่ละคอลัมน์ >
ผลลัพธ์ถ้าต้องการเพิ่ม sale คนใหม่ให้ร่วมรับผิดชอบสินค้าประเภท pants สามารถใช้คำสั่ง
SID SNAME PIDS01 SUDA 111S02 WANCHAI 112S03 APICHART 113S04 SOMJAI 114
INSERT INTO SALES
VALUES ( S05, " SUDA" , 112);
ตัวอย่าง ถ้าต้องการจะใส่ข้อมูลบางคอลัมน์ ใช้คำสั่งดังนี้
SID SNAME PID S01 SUDA 111 S02 WANCHAI 112 S03 APICHART 113 S04 SOMJAI 114 S05 SUDA 112
ผลลัพธ์INSERT INTO SALES(SID,SNAME)
VALUES ( 'S06','Arlee');
จะเห็นว่าไม่ได้ใส่ค่าในคอลัมน ์PID ไว้ ดังนั้นคอลัมน์นี้จะมีค่าเป็น NULL โดยอัตโนมัติ
SID SNAME PIDS01 SUDA 111S02 WANCHAI 112S03 APICHART 113S04 SOMJAI 114S05 SUDA 112S06 ARLEE
คำสั่งปรับปรุงแถวข้อมูล ( UPDATE )
เป็นการปรับปรุงหรือแก้ไขค่าคอลัมน์ซึ่งอาจมีมากกว่า 1 คอลัมน์ในแถวทุกแถวที่มีเงื่อนไขสอดคล้องกับที่ระบุไว้หลังคำว่า WHERE
รูปแบบ
ตัวอย่าง ถ้าต้องการเปลี่ยนค่า PID ของsale รหัส S03 ในตาราง SALES ให้เป็น 114 จะต้องป้อนคำสั่งดังนี้UPDATE < ชื่อตารางที่ต้องการปรับปรุง >
SET < ชื่อคอลัมน์ > = < ค่าข้อมูล >
WHERE < เงื่อนไขตามที่ระบุ >
ผลลัพธ์
UPDATE SALES
SET PID = 114
WHERE SID = S03;
คำสั่งลบแถวข้อมูล ( DELETE )
SID SNAME PIDS01 SUDA 111S02 WANCHAI 112S03 APICHART 114S04 SOMJAI 114S05 SUDA 112S06 ARLEE
ใช้ในการลบแถวข้อมูล ซึ่งจะเป็นคำสั่งให้มีการลบแถวข้อมูลทุกแถวที่มีเงื่อนไขสอดคล้องกับที่ระบุไว้หลังคำว่า WHERE
รูปแบบ
ตัวอย่างDELETE FROM < ชื่อตารางที่ระบุ >
WHERE < เงื่อนไขตามที่ระบุ >
ผลลัพธ์DELETE FROM SALES
WHERE SID = S03;
SID SNAME PIDS01 SUDA 111S02 WANCHAI 112S04 SOMJAI 114S05 SUDA 112S06 ARLEE
ไม่มีความคิดเห็น:
แสดงความคิดเห็น