ภาษา SQL (Structured Query Language)

Download Report

Transcript ภาษา SQL (Structured Query Language)

ภาษา SQL
(Structured Query Language)
1
ความเป็ นมาของ SQL
SQL ย่อมาจาก Structured Query
Language เป็ นภาษาที่ใช้ในการจัดการข้อมูลของฐานข้อมูลเชิง
สัมพันธ์ ผูค้ ิดค้น SQL เป็ นรายแรกคือ บริ ษทั ไอบีเอ็ม หลังจากนั้น
ผูผ้ ลิตซอฟท์แวร์ดา้ นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ได้พฒั นาระบบ
ที่สนับสนุน SQL มากขึ้น จนเป็ นที่นิยมใช้กนั อย่างแพร่ หลายใน
ปัจจุบนั โดยผูผ้ ลิตแต่ละรายก็พยายามที่จะพัฒนาระบบจัดการฐานข้อมูล
ของตนให้มีลกั ษณะเด่นเฉพาะขึ้นมา ทาให้รูปแบบการใช้คาสัง่ SQL
มีรูปแบบที่แตกต่างกันไปบ้าง เช่น ORACLE ACCESS
SQL Base ของ Sybase INGRES
2
หรื อ SQL Server ของ Microsoft เป็ นต้น ในขณะที่
American National Standards Institute
(ANSI) ได้กาหนดรู ปแบบมาตราฐานของ SQL ขึ้น ซึ่งเป็ น
มาตราฐานคาสัง่ SQL ตาม ANSI-86 ที่ใข้เป็ นมาตราฐานขั้นต่า
ในการอ้างอิง อย่างไรก็ตามรู ปแบบมาตราฐาน SQL ตาม ANSI86 มีขอ้ จากัดในการใช้คาสัง่ SQL เช่นกันเมื่อเปรี ยบเทียบกับ
SQL ของระบบจัดการฐานข้อมูล ผูท้ ี่ผลิตบางรายได้ทาการปรับปรุ ง
พัฒนาให้เป็ นประโยชน์และง่ายสาหรับผูใ้ ช้อยูต่ ลอดเวลา
3
ทาไมต้ องใช้ SQL
SQL เป็ นภาษาในยุคที่ 4 ซึ่ งใกล้เคียงภาษาพูด
(ภาษาอังกฤษ) ทาให้ง่ายต่อการใช้และทาความเข้าใจ ไม่ตอ้ งสนใจ
ขั้นตอนว่าต้องทาอย่างไรเพื่อให้ได้ขอ้ มูลมา แค่เพียงพิมพ์คาสั่งง่าย
ๆ ลงไปเพื่อบอกว่าเราต้องการข้อมูลอะไร จากตารางไหน ระบบ
จัดการฐานข้อมูล (DBMS) จะทาการค้นหาข้อมูลให้ทนั ที
SQL สารารถจะทางานร่ วมกับภาษาโปรแกรมอื่นได้เช่น C,
PASCAL, COBOL เราสามารถจะใช้SQL ร่ วมกับภาษ
เหล่านี้ให้ร่วมกันได้โดยจะใช้ภาษาเหล่ายนี้ในการเขียนโปรแกรม
4
ของการคานวณที่ซบั ซ้อน
การประมวลผลต่าง ๆ แล้วใช้ภาษา
SQL ในการจัดหา ค้นหา เปลี่ยนแปลงข้อมูล นอกจากนี้ เรายัง
สามารถจะเขียนคาสั่ง
SQL
แบบโต้ตอบโดยตรง
(Interactive) ทีละคาสัง่ ได้ดว้ ยSQL เป็ นภาษามาตราฐาน
ซึ่ งจะมีรูปแบบในการเขียนคาสั่งคล้าย ๆ กัน ไม่วา่ จะใช้งานบน
เครื่ อง Microsoft Computer หรื อเครื่ องอื่น ๆ SQL
เป็ นตัวจักรสาคัญของระบบฐานข้อมูลเชิงสัมพันธ์
ทั้งที่ผผู้ ลิต
Hardware และ Software รายใหญ่ต่างที่เข้ามามีส่วน
ร่ วมในการพัฒนาผลิตภัณฑ์ให้ทางานกับ
SQL อย่างมี
ประสิ ทธิภาพยิง่ ขึ้น
5
ประเภทของคาสัง่ SQL
1. ภาษาสาหรั บนิ ยามข้อมูล
(Data
Definition
Language: DDL) ประกอบด้วยคาสั่งที่ใช้ในการ
ก าหนดโครงสร้ างข้อ มูล ว่า มี ค อลัมน์ อะไร แต่ ล ะคอลัม น์ เก็ บ
ข้อมูลประเภทใด รวมถึงการเพิ่มคอลัมน์ การกาหนดดัชนี การ
กาหนดวิวของผูใ้ ช้ เป็ นต้น
2. ภาษาสาหรับจัดดาเนินการข้อมูล (Data Manipulation
Language : DML) ประกอบด้วยคาสัง่ ที่ใช้ในการ
เรี ยกข้อมูล การเปลี่ยนแปลงข้อมูล การเพิ่มหรื อลบข้อมูล เป็ นต้น
6
3. ภาษาที่ใช้ในการควบคุมข้อมูล
(Data
Control
Language : DCL) ประกอบด้วยคาสัง่ ที่ใช้ในการ
ควบคุม การเกิ ดภาวะพร้ อมกัน หรื อป้ องกันการเกิดเหตุการณ์ที่
ผูใ้ ช้หลายคนเรี ยกใช้ขอ้ มูลพร้ อมกัน โดยที่ ขอ้ มูลนั้น ๆ อยู่ใน
ระหว่างการปรับปรุ งแก้ไข ซึ่ งเป็ นเวลาเดียวกับที่ผใู้ ช้อีกคนหนึ่ ง
ก็ เ รี ย กใช้ข ้อ มู ล นี้ ท าให้ ช้อ มู ล ที่ ผูใ้ ช้ค นที่ ส องได้เ ป็ นค่ า ที่ ไ ม่
ถู ก ต้อ ง นอกจากนี้ ยัง ประกอบด้ว ยค าสั่ ง ที่ เ กี่ ย วข้อ งกับ การ
ควบคุมความปลอดภัยของข้อมูลด้วยการให้สิทธิ์ ผูใ้ ช้แตกต่างกัน
เป็ นต้น
7
รู ปแบบการใช้คาสัง่ SQL
รู ปแบบของการใช้คาสั่ง SQL สามารถใช้ได้ 2 รู ปแบบ
ดังนี้
1. คาสั่ง SQL ใช้เรี ยกดูขอ้ มูลแบบตอบโต้ (Interactive
SQL) เป็ นการใช้คาสัง่ SQL สัง่ งานบนจอภาพ เพื่อเรี ยกดู
ข้อมูลจากฐานข้อมูลได้โดยตรงในะขณะที่ทางาน
2. คาสั่ง
SQL
ที่ ใช้เขียนร่ วมกับโปรแกรมอื่ น ๆ
(Embedded QSL) เป็ นการนาคาสั่ง SQL ไปใช้
ร่ วมกับชุ ดคาสั่งที่เขียนโดยภาษาต่าง ๆ เช่ น
COBOL
PASCAL ACCESS ฯลฯ
8
ประโยชน์ของ SQL
ตามที่ได้กล่าวมาแล้วในข้างต้นว่า SQL เป็ นภาษาฐานข้อมูล
ที่สามารถใช้ในเรื่ องของการนิยามข้อมูล การเรี ยกใช้ หรื อการ
ควบคุมคาสัง่ เหล่านี้จะช่วยประหยัดเวลาในการพัฒนาระบบงาน
หรื อนาไปใช้ในส่ วนของการสร้างฟอร์ม (FORM) การทา
รายงาน (REPORT) ของระบบงานต่าง ๆ ได้รวดเร็ ว
ยิง่ ขึ้น
9
ข้อตกลงมาตราฐานในการใช้คงั่ SQL
รู ปแบบของคาสั่ง SQL ยึดรู ปแบบคาสัง่ SQL ที่สามารถ
นาไปประยุกต์ใช้กบั ORACLE ซึ่งเมื่อเข้าใจคาสัง่ เหล่านี้
ผูใ้ ช้สามารถนาไปประยุกต์ใช้กบั คาสัง่ SQL ที่ใช่ระบบ
จัดการฐานข้อมูลต่าง ๆ หรื อสามารถนาไปศึกษาเพิ่มเติม
รายละเอียดด้วยตนเองได้
โดยทัว่ ไป คาสัง่ SQL หนึ่ง ๆ จะจบด้วยเครื่ องหมาย ;
รู ปแบบคาสัง่ ใน SQL มีสญ
ั ลักษณ์ที่ใช้แทนความหมาย ดังนี้
10
ตัวพิมพ์ใหญ่ หมายถึง คาสัง่
< >
หมายถึง
ชื่อต่าง ๆ หรื อนิพจน์ที่ผใู ้ ช้จะต้องกาหนดค่าขึ้นมา
(....)
หมายถึง
สามารถจะระบุเพิ่มอีกตามสิ่ งที่ระบุมาแล้วข้างหน้า
[ ]
หมายถึง
คาสั่งนั้นๆ จะมีสิ่งที่ระบุไว้ในเครื่ องหมายนี้ หรื อไม่กไ็ ด้
::=
หมายถึง
ส่ วนที่อยูด่ า้ นขวาของเครื่ องหมายนี้ เป็ นคาอธิบายหรื อ
คา
|
หมายถึง
อาจจะเลือกใช้สิ่งใดสิ่ งหนึ่ งที่อยูด่ า้ นซ้าย หรื อ
ด้านขวาของ เส้นนี้ได้
11
ฐานข้ อมูลเชิงสั มพันธ์
ฐานข้อมูลเชิงสัมพันธ์ (Relational Database) เป็ น
ฐานข้อมูลรู ปแบบหนึ่ งที่นิยมใช้ในปั จจุบนั เนื่ องจากเป็ นฐานข้อมูลที่
เข้าใจง่าย ผูใ้ ช้ทวั่ ไปสามารถมองภาพของข้อมูลที่ถูกเก็บได้ง่ายเพราะ
ข้อมูลถูกจัดเก็บในลักษณะของตารางสองมิ ติ คื อเป็ นแถว(Row)
และคอลัมน์(Column) เป็ นรู ปแบบฐานข้อมูลที่ไม่ซบั ซ้อนและมี
เครื่ องมือที่ช่วยในการเรี ยกใช้ขอ้ มูลโดยคาสั่งง่ายๆ เช่น SQL เป็ น
ต้น
12
ความหมายของฐานข้อมูลเชิงสัมพันธ์
ฐานข้อมูลเชิงสัมพันธ์เป็ นฐานข้อมูลที่มีการจัดเก็บข้อมูลเป็ นแถว และ
คอลัมน์ในลักษณะของตารางสองมิติ โดยที่คอลัมน์หรื อแอททริ บิวต์
ในตารางต่าง ๆ ได้มีการออกแบบและผ่านการทาให้เป็ นแบบบรรทัด
ฐาน(Normalized) ทั้งนี้เพื่อลดความซ้ าซ้อน ความผิดพลาดที่
เกิดจาการเพิ่ม ลบ หรื อปรับปรุ งข้อมูล และทาให้การจัดการฐานข้อมูล
เป็ นไปอย่างมีประสิ ทธิภาพ
13
คุณลักษณะของข้อมูลที่จดั เก็บในตาราง
คุณลักษณะของข้อมูลที่จดั เก็บในตาราง เป็ นดังนี้
1. ข้ อมูลในแต่ ละแถวจะไม่ ซ้ากัน
ข้อมูลที่จดั เก็บในแต่ละแถวจะไม่มีขอ้ มูลซ้ ากัน โดยทัว่ ไประบบจัดการ
ฐานข้อมูลจะมีกลไกที่ใช้ในการควบคุมไม่ให้มีความซ้ าซ้อนเกิดขึ้น
2. การเรียงลาดับของคอลัมน์ จะเรียงลาดับก่ อนหลังอย่ างไรก็ได้
การเรี ยงลาดับของคอลัมน์แต่ละคอลัมน์ของตารางจะเรี ยงลาดับอย่างไรก็
ได้ ไม่การระบุว่าคอลัมน์ซ้ายสุ ด คือ คอลัมน์แรก หรื อคอลัมน์ขวาสุ ด
คือคอลัมน์สุดท้าย
14
3. การเรียงลาดับของข้ อมูลในแต่ ละแถวไม่ เป็ นสาระสาคัญ
การจัดเก็บของข้อมู ล ในรี เลชั้น จะถูก จัด เรี ย งตามลาดับลงบนสื่ อที่ เก็บ
ข้อมูล การจัดเก็บข้อมูลมนตารางสามารถแสดงให้เป็ นไปตามที่ ผูใ้ ช้
ต้องการ (Logical Level) นอกเหนื อจากที่แสดงตามที่ถูก
จัดเก็บจริ ง(Physical Level)
4. ค่ าของข้ อมูลในแต่ ละคอลัมน์ จะบรรจุข้อมูลได้ เพียงค่ าเดียว
ข้อ มู ล มนแต่ ล ะคอลัม น์ จ ะต้อ งบรรจุ ข ้อ มู ล เพี ย งค่ า เดี ย วไม่ ใ ช่ ก ลุ่ ม ของ
ข้อมูลที่แสดงค่าที่มากกว่าหนึ่ง
15
ประเภทของคีย ์
เค้าร่ างของตารางหรื อรี เลชัน่ (Table/Relation Schema)
ประกอบด้ว ยรายละเอี ย ดข้อ มู ล ของคอลัม น์ ต่ า ง ๆ ซึ่ งคอลัม น์ ใ ด
คอลัมน์หนึ่ งในตารางมี โอกาสที่ จะมี คุณสมบัติเป็ นคี ย ์ โดยคียน์ ้ ัน ๆ
สามารถใช้ในการแสดงหรื อบ่งบอกถึงค่าของข้อมูลที่ เหลื อในแต่ละ
แถว หรื อใช้ในการเชื่อมโยงข้อมูลกับข้อมูลกับอีกตารางหนึ่ ง ประของ
คียท์ ี่จะกล่าวในที่น้ ี แบ่งเป็ น 2 ประเภทหลัก ดังนี้คือ
16
1. คีย์หลัก (Primary Key)เป็ นคอลัมน์ทีมีคุณสมบัติของข้อมูล
ที่เก็บเป็ นค่าเฉพาะไม่ซ้ ากัน คุณสมบัติดงั กล่าวจะสามารถระบุวา่ ข้อมูล
นัน่ เป็ นข้อมูลแถวใด เช่น รหัสพนักงาน เลขที่ 2001 สามารถระบุ
ว่าเป็ นรหัสของพนักงานชื่อ CHAI เป็ นต้น
อย่างไรก็ตาม ในตารางหนึ่ง ๆ อาจจะมีคอลัมน์ที่มีคุณสมบัติเป็ นคีย ์
หลักได้มากกว่าหนึ่งคอลัมน์ คอลัมน์เหล่านี้มีคุณสมบัติเป็ นคียค์ ู่แข่ง
(Candidate Key)
คุณสมบัติของคอลัมน์ที่เป็ นคียห์ ลัก จะต้องไม่มีค่าของคอลัมน์ในแถว
ต่าง ๆ ซ้ ากัน เช่น ถ้ารหัสพนักงานเป็ นคียห์ ลัก ค่าของรหัสพนักงานแต่
ละคนจะต้องมีค่าที่ไม่ซ้ ากัน เป็ นต้น คียห์ ลักอาจประกอบด้วยคอลัมน์
มากกว่าหนึ่งคอลัมน์ (Composite Key) เพื่อให้เป็ นค่า
ข้อมูลที่ไม่ซ้ ากัน
17
2. คีย์นอก (Foreign Key)เป็ นคอลัมน์ในตารางหนึ่งที่สามารถ
ใช้ในการเชื่อมโยงข้อมูลกับอีกตารางหนึ่งที่มีคอลัมน์เดียวกันนี้ ปรากฏ
อยูต่ ว้ อย่างเช่น ตาราง EMPLOYEE มีคอลัมน์ DEPNO
เป็ นคียน์ อกที่ใช้ในการเชื่อมโยงข้อมูลของตาราง DEP ซึ่งมีคอลัมน์
DEPNO
เป็ นคียห์ ลักอยู่ สมมุติว่าต้องการดูพนักงานรหัส
1001 อยูแ่ ผนก ชื่ออะไร จากตาราง EMPLOYEE พนักงาน
1001 มีค่ารหัสแผนกเท่ากับ 10 รหัสนี้จะตรวจสอบกับรหัส
แผนก (DEPNO) ในตาราง DEP ก็จะได้ชื่อแผนกว่า
ACCOUNTING เป็ นต้น
18
กฏที่ใช้กบั ฐานข้อมูลเชิงสัมพันธ์
เนื่องจากตาราง ๆ ในฐานข้อมูลเชิงสัมพันธ์จะอ้างอิงความสั มพันธ์โดย
ใช้คีย ์ กฏที่เกี่ยวข้องกับคียใ์ นฐานข้อมูลเชิงสัมพันธ์มีดงั ต่อไปนี้
1 กฏความบูรณภาพของเอนทิตี้ (The Entity Integrity
Rule) กฏนี้ ระบุไว้วา่ คอลัมน์ใดที่จะเป็ นคียห์ ลัก ข้อมูลในคอลัมน์
นั้นจะเป็ นค่าว่าง (Null) ไม่ได้ ความหมายของการเป็ นค่าว่างไม่ได้
(Not Null) คือ ข้อมูลของคอลัมน์ที่เป็ นคียห์ ลักจะไม่มีค่าไม้ได้
19
2. กฏความบูรณภาพของการอ้ างอิง (The Referential
Integrity Rule) การอ้างอิงข้อมูลระหว่างตารางในฐานข้อมูล
เชิ ง สั ม พัน ธ์ จ ะใช้คี ย ์ห ลัก ของตารางในฐานข้อ มู ล เชิ ง สั ม พั น ธ์ ไ ป
ตรวจสอบกับค่าของคอลัมน์ที่เป็ นคียน์ อกของอีกตารางหนึ่ ง กล่างอีก
นัยหนึ่ งคือค่าของคี ยน์ อกจะต้องสามารถอ้างอิงให้ตรงกับค่าของคี ย ์
หลักได้จึงจะเชื่อมโยงหรื ออ้างอิงข้อมูลระหว่างสองตารางได้
20
สาหรับคียน์ อกจะมีค่าว่างได้ (Null) หรื อไม่ข้ ึนอยูก่ บั กฏเกณฑ์การ
ออกแบบฐานข้อมูลว่า ข้อจากัดในการออกแบบข้อมูลตามนโยบายของ
หน่วยงานนั้น ๆ เป็ นอย่างไร เช่น ในกรณี ตาราง EMPLOYEE
ซึ่ งมีรหัสแผนก (DEPNO) เป็ นคียน์ อก อาจจะถูกระบุวา่ ต้อง
ทราบค่า ในกรณี ที่พนักงานทุกคนจะถูกบรรจุเข้าแผนกต่าง ๆ หรื อบาง
หน่วยงานอาจจะทาให้การทดลองงานก่อนแล้วค่อยบรรจุเข้าแผนกต่าง
ๆ ในกรณี หลังนี้ พนักงานนั้นก็จะยังไม่มีค่ารหัสแผนกปรากฏอยู่ เป็ น
ต้น
21
คาสั่ ง SQL
การเรี ยกคาสัง่ ใน SQL ในการดูขอ้ มูลในโปรแกรมACCESS
คาสั่ ง SELECT
1.กาหนดข้อมูลใน QUERY เรี ยกชื่อ TABLE ที่ตอ้ งการ
2.เมนู VIEW เลือกคาสัง่ SQL view
3.พิมพ์คาสัง่
4. RUN รู ป
เพื่อแสดงผล
22
การเรียกดูข้อมูลทั้งตาราง
รู ปแบบของคาสั่ง SELECT เพื่อใช้เรี ยกดูขอ้ มูลทุกคอลัมน์จาก
ตารางใดตารางหนึ่งเป็ นดังนี้คือ
รู ปแบบ
Select *
From table name;
ในการเรี ยกดูขอ้ มูลทั้งตารางจะต้องใช้เครื่ องหมาย * เพื่อแทนการ
เรี ยกดูขอ้ มูลจากทุกคอลัมน์ของตารางหนึ่ง
เช่นเรี ยกดูขอ้ มูลทั้งตารางของ EMPLOYEE
คาสัง่ ที่ใช้คือ
Select *
From EMPLOYEE;
23
การเรียกดูข้อมูลเพียงบางคอลัมน์
รู ปแบบคาสั่ง SELECT เพื่อเรี ยกดูขอ้ มูลเพียงคอลัมน์จาก
ตารางใดตารางหนึ่ง คือ
รู ปแบบ
Select Column1, Column2...
From table name;
ในการเรี ยกดู ขอ้ มูล เพียงบางคอลัมน์ จาเป็ นต้องระบุ ชื่ อคอลัมน์ให้
ถูกต้อง ตามที่ ระบุ ไว้ในโครงสร้ าง หากเรี ยกดูมากกว่าหนึ่ งคอลัมน์
จะต้องมีเครื่ องหมาย , คัน่ ระหว่างซื่อคอลัมน์
24
เช่น ต้องการเรี ยกดู ชื่อพนักงาน ตาแหน่ง เงินเดือน
คาสัง่ ที่ใช้คือ
Select NAME, POSITION, SALARY
From EMPLOYEE;
25
การเรียกดูข้อมูลโดยเปลีย่ นชื่อฟิ ลด์
ในบางครั้งชื่อฟิ ลด์ ที่เราตั้งขึน้ อาจจะไม่ ตรงกับความต้ องการ เรา
สามารถเปลีย่ นชื่อของฟิ ลด์ ใหม่ ในการเรียกดูข้อมูลได้ โดยใช้ AS
เช่ น ต้ องการชื่อฟิ ลด์ POSITION เป็ น DEPT
คาสัง่ ที่ใช้คือ
Select POSITION AS DEPT
From EMPLOYEE;
26
การเรียกดูข้อมูลโดยไม่ ให้ แสดงข้ อมูลทีซ่ ้ากัน
เมื่อต้ องการดูข้อมูลจากตารางโดยไม่ ให้ แสดงข้ อมูลซ้ากันออกมา จะใช้
คาว่ า DISTINCTหลังคาว่ า SELECT
เช่ น ต้ องการเรียกดู ชื่อพนักงาน ตาแหน่ งของพนักงานทีไ่ ม่ ซ้ากัน
คาสั่ งที่ใช้ คอื
Select DISTINCT NAME, POSITION
From EMPLOYEE;
27
Top n เป็ นการเลือกเรคคอร์ ดจากตาแหน่ งของเรคคอร์ ดแรกไปยัง
ตาแหน่ งของเรคคอร์ดระบุไว้
เช่ น ต้ องการเรียกดู เรคคอร์ ดแรกถึงเรคคอร์ ดที5
่
คาสั่ งที่ใช้ คอื
Select Top 5 *
From EMPLOYEE;
28
การเรียกดูข้อมูลโดยแสดงผลข้ อมูลทางคอลัมน์ เป็ นนิพจน์ ทางคณิตศาสตร์
เครื่องหมาย
+ (Add)
- (Subtract)
* (Multiply)
/ (Divide)
ความหมาย
บวก
ลบ
คูณ
หาร
29
เช่ น ต้ องการคานวณหาเงินเดือนสุ ทธิหลังหักภาษี 3% ของเงินเดือน
คาสั่ งที่ใช้ คอื
Select EMPNAME, SALARY(SALARY*0.03)AS TOTAL_SALARY
From EMPLOYEE;
30
การจัดเรียงลาดับผลลัพธ์ โดยใช้ ORDER BY
ORDER BY เป็ นคาสั่ งที่ใช้ สาหรับการเรียงลาดับหรือ
Sorting ขัอมูลตามอักษรหรือฟิ ลด์ ทกี่ าหนด สามารถกาหนดการ
เรียงจากมากไปหาน้ อย (Descending order
(DESC) หรือจากน้ อยไปหามาก (Ascending order
(ASC) โดยทัว่ ไปแล้ วจะเรียงลาดับจากน้ อยไปหามากเสมอ
31
เช่น ต้องการเรี ยงลาดับชื่อของพนักงาน
คาสั่งที่ใช้คือ
ปกติ
คาสั่งที่ใช้คือ
เรี ยงจากน้อยไปหามาก
คาสั่งที่ใช้คือ
เรี ยงจากมากไปหาน้อย
Select EMPNAME
Select EMPNAME
Select EMPNAME
From EMPLOYEE
From EMPLOYEE From EMPLOYEE
Order By
ENPNAME;
Order By
ENPNAME ASC;
Order By ENPNAME
DESC;
32
นอกจากนีก้ ารใช้ ORDER BY ยังสามารถใช้ เลขกากับ
แทนการใช้ ชื่อฟิ ลด์ ได้ อกี ด้ วย
เช่น การเรี ยกดูขอ้ มูลโดยจัดเรี ยงผลลัพธ์ตามชื่อมากไปหาน้อย และ
เงินเดือนด้วย
Select EMPNAME, SALARY
From EMPLOYEE
ORDER BY 1 DESC, 2;
33
การเรียกดูข้อมูลแบบมีเงือ่ นไข
การเรี ยกดูขอ้ มูลแบบมีเงือนไข
เป็ นการระบุค่าเฉพาะของ
ข้อมูลที่ตอ้ งการเรี ยกดู อาจจะใช้เงื่อนไขเพื่อดึงดูขอ้ มูลของพนักงาน
ที่มีเงินเดือนมากกว่า 3000 เป็ นต้น ดังนั้นการเรี ยกดูขอ้ มูลแบบมี
เงื่ อ นไขโดยมี โ อเปอร์ เ รเตอร์ ท างตรรกะหรื อ โอเปอเรเตอร์ ข อง
SQL เป็ นต้นเป็ นตัวประกอบในการแสดงเงื่อนไข
การเรี ยกดูขอ้ มูลแบบมีเงื่อนไข
จะใช้วลีหรื ออนุ ประโยค
WHERE ต่อท้ายวลีหรื ออนุประโยค FROM รู ปแบบคาสัง่
34
รู ปแบบ
SELECT Column1, Column2...
FROM table name
WHERE CONDITION;
35
ในอนุประโยค WHERE ประกอบด้ วยส่ วนสาคัญ 3 ส่ วนคือ
ชื่อคอลัมน์
โอเปอเรเตอร์การเปรี ยบเทียบ ซึ่งแบ่งออกเป็ นโอเปอเรเตอร์ ทาง
ตรรกะ (LOGICAL OPERATER) โอเปอเรเตอร์
SQL รวมถึงการใช้โอเปอเรเตอร์ BOOLEAN
ข้อมูลเฉพาะที่ตอ้ งการแสดงเป็ นเงื่อนไขของชื่อคอลัมน์ที่ระบุในข้อ 1
อาจเป็ นค่าคงที่ (CONSTANT) กลุ่มของข้อมูลหรื อ
นิพจน์(EXPRESSON) หรื อชื่อคอลัมน์อื่นที่ตอ้ งการ
นามาเปรี ยบเทียบข้อมูลเฉพาะที่เป็ นประเภทตัวอักษรหรื อ วัน
เดือน ปี (DATE) เมื่อนามาเป็ นเงื่อนไขเฉพาะจะต้องมี
เครื่ องหมาย ‘ ‘ กากับ
36
ในอนุประโยค WHERE ประกอบด้ วยส่ วนสาคัญ 3 ส่ วนคือ
1. ชื่อคอลัมน์
2. โอเปอเรเตอร์ การเปรี ยบเทียบ ซึ่ งแบ่งออกเป็ นโอเปอเรเตอร์ ทาง
ตรรกะ (LOGICAL OPERATER) โอเปอเรเตอร์
SQL รวมถึงการใช้โอเปอเรเตอร์ BOOLEAN
3. ข้อมูลเฉพาะที่ตอ้ งการแสดงเป็ นเงื่อนไขของชื่อคอลัมน์ ที่ระบุในข้อ
1 อาจเป็ นค่าคงที่ (CONSTANT) กลุ่มของข้อมูลหรื อ
นิ พจน์(EXPRESSON) หรื อชื่อคอลัมน์อื่นที่ตอ้ งการ
น ามาเปรี ย บเที ย บข้อ มู ล เฉพาะที่ เ ป็ นประเภทตัว อัก ษรหรื อ วัน
เดือน ปี (DATE) เมื่อนามาเป็ นเงื่อนไขเฉพาะจะต้องมี
เครื่ องหมาย ‘ ‘ กากับ
37
เครื่องหมายการแสดงการเปรียบเทียบค่ าข้ อมูล
โอเปอเรเตอร์
ความหมาย
=
เท่ากับ
>
มากกว่า
>=
มากเท่ากับ
<
น้อยกว่า
<=
น้อยกว่าเท่ากับ
<>
ไม่เท่ากับ
38
เช่ น ต้ องการเรียกดูข้อมูลทั้งตาราง ทีม่ ีเงือนไขเงินเดือนมากกว่ า
30000
คาสั่ งที่ใช้ คอื
Select *
From EMPLOYEE
WHERE SALARY>30000;
39
เช่ น ต้ องการเรียกดูข้อมูล รหัส ชื่อพนักงาน รหัสแผนก ของพนักงานที่
มีตาแหน่ ง MANAGER
คาสั่ งที่ใช้ คอื
Select EMPNUM, EMPNAME,
DEPNO
From EMPLOYEE
WHERE POSITION ='MANAGER';
40
เช่ น ต้ องการเรียกดูข้อมูลชื่อพนักงานทีม่ ีเงินเดือนต่ อปี มากกว่ า
300000
คาสั่ งที่ใช้ คอื
Select EMPNAME, SALARY
From EMPLOYEE
WHERE SALARY*12>300000
41
การเรียกดูข้อมูลแบบมีเงือ่ นไขโดยใช้ คาสั่ ง BETWEEN...
AND....
BETWEEN...AND เป็ น
โอเปอรเรเตอร์ ที่กาหนดเงื่อนไขของคอลัมน์ เป็ นค่ าระหว่ างค่ าสอง
ค่ า การใช้ BETWEEN...AND จะแสดงต่ อท้ ายชื่อ
คอลัมน์ ทถี่ ูกระบุให้ เป็ นเงือ่ นไข
42
เช่ น ต้ องการเรียกดูข้อมูลทีแ่ สดงชื่อ และเงินเดือนของพนักงานที่มี
เงินเดือนอยู่ระหว่ าง 20000 กับ 50000
คาสั่ งที่ใช้ คอื
Select EMPNAME, SALARY
From EMPLOYEE
WHERE SALARY BETWEEN 20000
AND 50000;
หรือ
43
การเรียกดูข้อมูลแบบมีเงือ่ นไขโดยใช้ คาสั่ ง IN
IN เป็ นโอเปอรเรเตอร์ ที่ใช้ กบั เงือ่ นไขของคอลัมน์ ที่ต้องการระบุ
เงือ่ นไขเป็ นกลุ่มของข้ อมูลโดย IN จะแสดงต่ อท้ ายชื่อคอลัมน์ ทถี่ ู
ระบุเป็ นเงือ่ นไข และกลุ่มของข้ อมูลทีเ่ ป็ นข้ อมูลเฉพาะของคอลัมน์
ทีเ่ ป็ นเงือ่ นไขนี้ จะระบุในวงเล็บ และมีเครื่องหมาย , คัน่
44
เช่ น ต้ องการเรียกดูข้อมูลรหัส ชื่อ เงินเดือน และรหัสผู้บังคับบัญขา
ของพนักงานทีม่ ีรหัสผู้บังคับบัญชาเป็ น 1002 2002
และ 3004
คาสั่ งที่ใช้ คอื
Select EMPNUM,
EMPNAME,SALARY,MRGNO
From EMPLOYEE
WHERE MRGNO IN ('1002', '2002',
'3004');
หรือ
45
เช่ น ต้ องการเรียกดูข้อมูลของพนักงานทีอ่ ยู่แผนกทีม่ รี หัส 20 และ
40 โดยให้ แสดงเรียงตามเงินเดือนจากมากไปหาน้ อย
คาสั่ งที่ใช้ คอื
Select *
From EMPLOYEE
WHERE DEPNO IN('20', '40')
ORDER BY SALARY DESC;
46
การเรียกดูข้อมูลแบบมีเงือ่ นไขโดยใช้ คาสั่ ง LIKE
LIKE เป็ นโอเปอรเรเตอร์ ที่ใช้ ในการค้ นหาข้ อมูลของคอลัมน์ ที่
เก็บ ข้ อมู ลประเภทตัวอักษรเท่ านั้ น โดยยังไม่ ทราบค่ าที่แน่ นอน
ทั้ ง หมดของข้ อ มู ล ที่ จ ะค้ น หา หรื อ รู้ เพีย งบางตั ว อั ก ษรเท่ า นั้ น
โอเปอเรเตอร์ LIKE จะระบุต่อท้ ายชื่อคอลัมน์ ที่เป็ นเงื่อนไข
โดยจะใช้ สัญญาลักษณ์ ช่วยในการค้ นหาข้ อมูลเป็ นตัวช่ วยในการ
ค้ นหาข้ อมูลทีเ่ รียกว่ า Wild Card (อักขระพิเศษ) ดังนี้
ตัวอักขระพิเศษ
ความหมาย
*
แทนอักษรใดๆ กีต่ ัวก็ได้
?
แทนอักษรใดๆ 1 ตัว
47
การเรียกดูข้อมูลแบบมีเงือ่ นไขโดยใช้ คาสั่ ง LIKE
LIKE เป็ นโอเปอรเรเตอร์ ที่ใช้ ในการค้ นหาข้ อมูลของคอลัมน์ ที่
เก็บ ข้ อมู ลประเภทตัวอักษรเท่ านั้ น โดยยังไม่ ทราบค่ าที่แน่ นอน
ทั้ ง หมดของข้ อ มู ล ที่ จ ะค้ น หา หรื อ รู้ เพีย งบางตั ว อั ก ษรเท่ า นั้ น
โอเปอเรเตอร์ LIKE จะระบุต่อท้ ายชื่อคอลัมน์ ที่เป็ นเงื่อนไข
โดยจะใช้ สัญญาลักษณ์ ช่วยในการค้ นหาข้ อมูลเป็ นตัวช่ วยในการ
ค้ นหาข้ อมูลทีเ่ รียกว่ า Wild Card (อักขระพิเศษ) ดังนี้
ตัวอักขระพิเศษ
ความหมาย
*
แทนอักษรใดๆ กีต่ ัวก็ได้
?
แทนอักษรใดๆ 1 ตัว
48
เช่ น ต้ องการเรียกดูข้อชื่อพนักงานทีข่ นึ้ ต้ นด้ วยอักษร S อย่ างเดียว
คาสั่ งที่ใช้ คอื
Select EMPNAME
From EMPLOYEE
WHERE EMPNAME LIKE"S*";
หรือ
49
เช่ น ต้ องการเรียกดูข้อชื่อพนักงานทีล่ งท้ ายด้ วยอักษร E อย่ างเดียว
คาสั่ งที่ใช้ คอื
Select EMPNAME
From EMPLOYEE
WHERE EMPNAME LIKE"*E";
หรือ
50
เช่ น ต้ องการเรียกดูข้อชื่อพนักงานทีม่ ีอกั ษร Hเป็ นตัวที2่ ตามด้ วย
ตัวอักษรอะไรก็ได้
คาสั่ งที่ใช้ คอื
Select EMPNAME
From EMPLOYEE
WHERE EMPNAME LIKE"?H*";
หรือ
51
การเรียกดูข้อมูลแบบมีเงือ่ นไขโดยใช้ คาสั่ งIS NULL
IS NULL เป็ นโอเปอเรเตอร์ ที่ใช้ ในแสดงค่ าของคอลัมน์ ที่มีค่า
เป็ นค่ าว่ าง หรือไม่ มีค่า
เช่ น ให้ แสดงชื่อคอลัมน์ ทไี่ ม่ มผี ู้บังคับบัญชา
คาสั่ งที่ใช้ คอื
Select *
From EMPLOYEE
WHERE MRGNO IS NULL;
52
นอกจากโอเปอเรเตอร์ ของSQL ทั้ง 4 ที่กล่ าวมาข้ างต้ น
โอเปอเรเตอร์ เหล่ านีย้ งั สามารถใช้ เป็ นเงื่อนไขในเชิงปฏิเสธ โดยใช้
NOT นาหน้ าดังนี้
โอเปอเรเตอร์
ความหมาย
NOT BETWEEN ... AND ไม่ มีค่าอยู่ระหว่ างค่ า
สองค่ าทีร่ ะบุ
NOT IN
ไม่ มีค่าทีเ่ ป็ นกลุ่มข้ อมูล
ทีร่ ะบุ
NOT LIKE
ไม่ มีค่าตามตัวอักษรหรือ
สั ญญาลักษณ์
IS NOT NULL
ไม่ มีค่าเป็ นค่ าว่ าง
53
การเรียกดูข้อมูลแบบมีเงือ่ นไขโดยใช้ โอเปอเรเตอร์ บูลนี
การเรียกดูข้อมูลทีม่ ีเงือ่ นไขมากกว่ าหนึ่งเงือ่ นไข สามารถใช้
โอเปอเรเตอร์ บูลนี เป็ นตัวเชื่อมโยงเงือ่ นไขดังกล่ าว โอเปอเรเตอร์
บูลนี ประกอบด้ วย
AND
ใช้ เชื่อมเงือ่ นไขสองเงือ่ นไข โดยข้ อมูลทีจ่ ะแสดง
ออกมาจะต้ องเป็ นจริงตามเงื่อนไขทั้งสอง
OR
ใช้ เชื่อมเงือ่ นไขสองเงือ่ นไข โดยข้ อมูลทีจ่ ะแสดง
ออกมาจะต้ องเป็ นจริงตามเงื่อนไขใดเงื่อนไขหนึ่ง
NOT
ใช้ แสดงหน้ าเงื่อนไขใดเงื่อนไขหนึ่ง เพือ่ ให้ ได้ ข้อมูลที่
ไม่ เป็ นไปตามเงือ่ นไขทีร่ ะบุ
54
การลาดับการทางานก่ อนหลังของโอเปอเรเตอร์
จะเห็นว่ าโอเปอเรเตอร์ ต่างๆ ที่ใช้ ในการแสดงเงื่อนไขมีมากมาย
การลาดับการทางานของโอเปอเรเตอร์ จะสามารถกาหนดให้ ทางาน
ก่ อนหลังด้ วยเครื่องหมายวงเล็บ ( ) เหมือนหลักการคานวณ
ทางคณิตศาสตร์
55
เช่ น ให้ แสดงรหัส ชื่อ ตาแหน่ ง และเงินเดือนของพนักงานที่มีตาแหน่ ง
งานเป็ นMANAGER และมีเงินเดือนอยู่ระหว่ าง 30000
กับ 50000
คาสั่ งที่ใช้ คอื
Select EMPNUM, EMPNAME,
POSITION, SALARY
From EMPLOYEE
WHERE SALARY BETWEEN 30000
AND 50000 AND
POSITION="MANAGER";
56
หรือ
เช่ น ให้ แสดงชื่อ ตาแหน่ ง เงินเดือนของพนักงานที่มเี งินเดือนมากว่ า
20000 และมีตาแหน่ งเป็ นMANAGER หรือ
SUPERVISOR
คาสั่ งที่ใช้ คอื
Select EMPNAME, POSITION,
SALARY
From EMPLOYEE
WHERE SALARY >20000 AND
(POSITION="MANAGER" OR
POSITION="SUPERVISOR");
57
หรือ
เช่ น ให้ แสดงข้ อมูลของพนักงานทีม่ เี งินเดือนน้ อยกว่ า 20000และ
และไม่ ได้ อยู่แผนกทีม่ ีรหัส 20
คาสั่ งที่ใช้ คอื
Select *
From EMPLOYEE
WHERE SALARY <=20000 AND NOT
DEPNO="20";
58
การแสดงข้ อมูลด้ วยฟังก์ ชั่นทีเ่ กีย่ วกับการรวม
ในการเรี ยกดูข้อมูลอาจกระทาการสรุ ปค่ าของข้ อมูล โดยการรวม
การหาค่ าเฉลีย่ การนับหรือการหาค่ าสู งสุ ด หรือต่าสุ ด ฟังก์ ชั่นที่
เกี่ ย วกั บ การรวมที่ ส ามารถน าไปใช้ ใ นการเรี ย กดู ข้ อ มู ล อย่ า งมี
เงื่อนไขได้ ด้วย
59
ฟังก์ชั่น
ผลทีไ่ ด้ จากการใช้ ฟังก์ช้ัน
AVG(COLUMN NAME)
เป็ นฟังก์ชนั่ ที่ใช้ในการหาค่าเฉลี่ยของ
คอลัมน์หนึ่ง ๆ ที่เก็บข้อมูลประเภทตัวเลข
COUNT(COLUMN NAME) เป็ นฟังก์ชนั่ ที่ใช้ในการนับจานวนแถว
60
MAX(COLUMN NAME)
เป็ นฟังก์ชนั่ ที่ใช้ในการคานวณหาค่าสู งสุ ด
MIN(COLUMN NAME)
เป็ นฟังก์ชนั่ ที่ใช้ในการคานวณหาค่าต่าสุ ด
SUM(COLUMN NAME)
เป็ นฟังก์ชนั่ ที่ใช้ในการคานวณหาค่าผลรวม
61
ตัวอย่ าง เช่ น ให้ หาค่ าเงินเดือนเฉลีย่ ของพนักงาน
คาสัง่ ที่ใช้คือ
SELECT AVG(SALARY) AS "ค่ าเฉลีย่ "
FROM EMPLOYEE;
ผลที่ได้ รับคือ
ค่ าเฉลีย่
21785.714286
62
ตัวอย่ าง เช่ น ให้ นับจานวนพนักงานของบริษทั ทีอ่ ยู่แผนกรหัส30
คาสัง่ ที่ใช้คือ
SELECT COUNT(*) AS "จานวน"
FROM EMPLOYEE
WHERE DEPNO= "30" ;
ผลที่ได้ รับคือ
จานวน
5
63
ตัวอย่ าง เช่ น ให้ นับจานวนว่ ามีข้อมูลเงินเดือนทีม่ ากกว่ าหรือเท่ ากับ
2500
คาสัง่ ที่ใช้คือ
SELECT COUNT(*) AS "จานวน"
FROM EMPLOYEE
WHERE SALARY>= 25000 ;
ผลที่ได้ รับคือ
จานวน
6
64
ตัวอย่ าง เช่ น ให้ คานวณหาค่ าสู งสุ ดและตา่ สุ ดของเงินเดือนพนักงาน
คาสัง่ ที่ใช้คือ
SELECT MAX(SALARY) AS "ค่ าสู งสุ ด",
MIN(SALARY) AS "ค่ าตา่ สุ ด"
FROM EMPLOYEE;
ผลที่ได้ รับคือ
ค่ าสู งสุ ด
ค่ าตา่ สุ ด
50000
9000
65
ตัวอย่ าง เช่ น ให้ หาผลรวมของเงินเดือนของพนักงานทีอ่ ยู่แผนก 20
คาสัง่ ที่ใช้คือ
SELECT SUM(SALARY) AS "ค่ าผลรวม"
FROM EMPLOYEE
WHERE DEPNO= "20" ;
ผลที่ได้ รับคือ
ค่ าผลรวม
88000
66
ตัวอย่ าง เช่ น ให้ หาผลรวมของเงินเดือนของพนักงานที่มีตาแหน่ ง
CLERK
คาสัง่ ที่ใช้คือ
SELECT SUM(SALARY) AS "ค่ าผลรวม"
FROM EMPLOYEE
WHERE POSITION= "CLERK" ;
ผลที่ได้ รับคือ
ค่ าผลรวม
44000
67
การใช้ อนุประโยค GROUP BY
GROUP BY เพื่อให้จดั กลุ่มตามคอลัมน์ที่กาหนดให้จดั
กลุ่มข้อมูลเฉพาะย่อยลงไป เช่น ให้หาค่าเฉลี่ยของเงินเดือน
พนักงานโดยจัดกลุ่มตามรหัสแผนก เป็ นต้น
ในกรณี ที่ใช้ GROUP BY การระบุชื่อของคอลัมน์ที่จะเรี ยก
ข้อมูลออกมาดูน้ นั จะต้องเป็ นข้อมูลของคอลัมน์ที่สามารถนามาใช้
จัดกลุ่มในอนุประโยค GROUP BY ได้ ตัวอย่างเช่น
ต้องการเรี ยกดูขอ้ มูล รหัสแผนกและค่าเงินเดือนเฉลี่ยของแต่ละ
แผนก การเรี ยกดูขอ้ มูลในกรณี น้ ีจะทาได้ เพราะทั้งรห้สแผนก
และเงินเดือนสามารถหาค่าออกมาในลักษณะการจัดกลุ่มได้
68
ตัวอย่างเปรี ยบเทียบกัน สมมุติว่า มีการเรี ยกดูชอ้ มูล ชื่ อพนักงาน
รหัสแผนก และค่าเงินเดือนเฉลี่ยของแต่ละแผนก การเรี ยกดูขอ้ มูล
ในลัก ษณะนี้ จะไม่ ถู ก ต้ อ ง เพราะชื่ อ พนั ก งาน จะแสดงเป็ น
รายละเอียดซึ่ งไม่สามารถจัดกลุ่มได้ ดังนั้น จะต้องระมัดระวังเวล
เรี ยกดู ข ้ อ มู ล จากคอลั ม น์ ต่ า ง ๆ เมื่ อ มี ก ารใช้ อ นุ ประโยค
GROUP BY นัน่ คือรายะละเอียดข้อมูลที่เรี ยกดู ควรเป็ น
ฟั ง ก์ ช้ ั น ในการรวม หรื อชื่ อ คอลัม น์ ที่ ส ามารถจัด กลุ่ ม ในอนุ
ประโยค GROUP BY ได้
69
ตัวอย่ าง เช่น ให้แสดงข้อมูลรหัสแผนก และเงินเดือนเฉลีย่ ของ
แผนกต่าง ๆ
คาสัง่ ที่ใช้คือ
SELECT DEPNO, AVG(SALARY) AS
AVG
FROM EMPLOYEE
GROUP BY DEPNO ;
ผลที่ได้ รับคือ
DEPNO
10
20
30
AVG
20250.50
29333.33
18800.00
70
ตัวอย่ าง เช่น ให้แสดงข้อมูลรหัสแผนก และเงินเดือนสูงสุดและ
ต่าสุ ดของแผนก
คาสัง่ ที่ใช้คือ
SELECT DEPNO, MAX(SALARY) AS
MAX, MIN(SALARY) AS MIN
FROM EMPLOYEE
GROUP BY DEPNO ;
ผลที่ได้ รับคือ
DEPNO
10
20
30
MAX
30000
50000
29000
MIN
9000
14000
10000
71
ตัวอย่ าง เช่น ให้แสดงข้อมูลตาแหน่ง และเงินเดือนเฉลีย่ ของแต่ละ
ตาแหน่งงานโดยไม่ตอ้ งแสดงข้อมูลของพนักงานทีมีตาแหน่ง
CLERK
คาสัง่ ที่ใช้คือ
SELECT POSITION, AVG(SALARY) AS
AVG
FROM EMPLOYEE
WHERE POSITION<>”CLERK”
GROUP BY POSITION ;
72
ผลที่ได้ รับคือ
POSITION
CONTROLLER
DIRECTOR
MANAGER
SALESMAN
SUPERVISOR
AVG
30000.00
50000.00
29000.00
13333.33
25000.00
73
การใช้ อนุประโยค HAVING
อนุประโยค HAVING จะใช้ ร่วมกันอนุประโยค
GROUP BY เสมอ เพือ่ ต้ องการให้ แสดงข้ อมูลทีไ่ ด้ ผ่านการ
จัดกลุ่ม โดย GROUP BY เพียงบางส่ วนตามเงื่อนไขที่ระบุ
ในอนุประโยค HAVING ดังนั้นการเรียกดูข้อมูลโดยมีอนุ
ประโยค HAVING จะต้ องมีอนุประโยค GROUP BY
เสมอ
74
การใช้ อนุประโยค HAVING
อนุประโยค HAVING จะใช้ ร่วมกันอนุประโยค
GROUP BY เสมอ เพือ่ ต้ องการให้ แสดงข้ อมูลทีไ่ ด้ ผ่านการ
จัดกลุ่ม โดย GROUP BY เพียงบางส่ วนตามเงื่อนไขที่ระบุ
ในอนุประโยค HAVING ดังนั้นการเรียกดูข้อมูลโดยมีอนุ
ประโยค HAVING จะต้ องมีอนุประโยค GROUP BY
เสมอ
75
ตัวอย่ าง เช่ น ให้ แสดงข้ อมูลตาแหน่ งงาน และค่ าเงินเดือนเฉลีย่ ของแต่
ละตาแหน่ งงานโดยแสดงหาค่ าเงินเดือนเฉลีย่ ที่มากกว่ า 20000
คาสั่ งที่ใช้ คอื
SELECT POSITION, AVG(SALARY) AS
AVG
FROM EMPLOYEE
GROUP BY POSITION
HAVING AVG(SALARY)>20000;
76
ผลที่ได้ รับคือ
POSITION
CONTROLLER
DIRECTOR
MANAGER
SUPERVISOR
AVG
30000.00
50000.00
29000.00
25000.00
77
ตัวอย่ าง เช่ น ให้ แสดงข้ อมูลรหัสแผนก และเงินเดือนเฉลีย่ ของแผนก
โดยให้ แสดงเฉพาะแผนกที่มีพนักงานมากกว่ า 4 คน
คาสั่ งที่ใช้ คอื
SELECT DEPNO, AVG(SALARY) AS
AVG
FROM EMPLOYEE
GROUP BY DEPNO
HAVING COUNT(*)>4;
ผลที่ได้ รับคือ
DEPNO
AVG
30
18800.00
78
การใช้ อนุประโยค GROUP BYและHAVING
ร่ วมกับ WHERE
จากการที่อนุประโยค GROUP BY และ HAVING ใช้
ในการเรี ยกดูข้อมู ลบางแถวออกมาตามเงื่อนไขที่ระบุไว้ สาหรั บ
การใช้ WHERE เพื่อแสดงเงื่อนไขนั้น จะใช้ ฟังก์ ชั่ นที่
เกีย่ วกับการรวมมาเป็ นเงื่อนไขไม่ ได้
79
ตัวอย่ างเช่ น
SELECT DEPNO, AVG(SALARY) AS
AVG
FROM EMPLOYEE
WHERE AVG(SALARY)>20000
GROUP BY DEPNO ;
80
คาสั่ งในการเรียกดูข้อมูลนีไ้ ม่ ถูกต้ อง เพราะอนุประโยค
WHERE สามารถใช้ ในการกาหนดเงื่อนไขได้ แต่ ไม่ สามารถ
ใช้ ฟังก์ ชั่นเกีย่ วกับการรวมเพือ่ ระบุเงือ่ นไขในการดึงข้ อมูลทีถ่ ูกจัด
กลุ่มบางข้ อมูลออกมา จากตัวอย่ างข้ างต้ นจะต้ องเขียนด้ วยอนุ
ประโยค HAVING ดังนีค้ อื
81
SELECT DEPNO, AVG(SALARY) AS
AVG
FROM EMPLOYEE
GROUP BY DEPNO
HAVING AVG(SALARY)>20000;
82
ตัวอย่ าง เช่ น ให้ แสดงข้ อมูลรหัสแผนก และเงินเดือนเฉลีย่ ของแผนก
ยกเว้ นแผนกทีม่ ีรหัส 20
คาสั่ งที่ใช้ คอื
SELECT DEPNO, AVG(SALARY) AS
AVG
FROM EMPLOYEE
WHERE DEPNO<>”20”
GROUP BY DEPNO ;
ผลที่ได้ รับคือ
DEPNO
10
30
40
AVG
20250.00
18800.00
21000.00
83
ขั้นตอนการเขียนคาสัง่ SQLในโปรแกรม Access
1. เปิ ดโปรแกรม Access เปิ ดไฟล์งาน(Database)ที่ตอ้ งการ
เขียนคาสัง่
2. คลิกแถบ Queries ดับเบิ้ลคลิก Create query in
Design view
3. ขึ้นแถบ Show Table
84
4. คลิกปุ่ ม Close
5. คลิกปุ่ ม view จะแสดงดังภาพ
6.คลิก SQL SQL View เพื่อเขียนคาสัง่
7 คลิก
เพื่อแสดงผล
85