บทนำสู่การเขียนโปรแกรม SQL ใน Access

เมื่อคุณต้องการเรียกใช้ข้อมูลจากฐานข้อมูล คุณขอข้อมูลนั้นโดยใช้ Structured Query Language (SQL) SQL เป็นภาษาคอมพิวเตอร์ที่มีความคล้ายคลึงกับภาษาอังกฤษ ที่ใช้สื่อสารกับโปรแกรมฐานข้อมูล ทุกแบบสอบถามที่คุณเรียกใช้จะใช้ SQL อยู่เบื้องหลัง

การทำความเข้าใจวิธีการทำงานของ SQL จะช่วยให้คุณสามารถสร้างแบบสอบถามที่ดียิ่งขึ้น และยังช่วยให้คุณเข้าใจวิธีแก้ไขแบบสอบถาม ซึ่งไม่ส่งกลับผลลัพธ์ที่คุณต้องการได้ง่ายขึ้นด้วย

หมายเหตุ   คุณไม่สามารถแก้ไข SQL ของแบบสอบถามเว็บได้

ในบทความนี้

SQL คืออะไร

ส่วนคำสั่ง SQL พื้นฐาน: SELECT, FROM และ WHERE

การเรียงลำดับผลลัพธ์: ORDER BY

การทำงานกับข้อมูลสรุป: GROUP BY และ HAVING

การรวมผลลัพธ์แบบสอบถาม: UNION

ข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง SELECT

การเลือกโดยใช้นิพจน์

ข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง FROM

ข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง WHERE

ไวยากรณ์ส่วนคำสั่ง WHERE

SQL คืออะไร

SQL เป็นภาษาคอมพิวเตอร์สำหรับทำงานกับชุดข้อมูลและความสัมพันธ์ระหว่างชุดข้อมูลต่างๆ โปรแกรมฐานข้อมูลเชิงสัมพันธ์ เช่น Microsoft Office Access จะใช้ SQL ในการทำงานกับข้อมูล SQL เป็นภาษาที่ผู้ใช้สามารถอ่านและทำความเข้าใจได้ไม่ยาก แม้แต่กับผู้ใช้ระดับเริ่มต้น ซึ่งต่างจากภาษาคอมพิวเตอร์อื่นๆ SQL เป็นมาตรฐานระดับสากลที่หน่วยงานกำหนดมาตรฐาน เช่น ISO และ ANSI ให้การรับรอง เช่นเดียวกับภาษาคอมพิวเตอร์อื่นๆ

“SQL เป็นภาษาที่ผู้ใช้สามารถอ่านและทำความเข้าใจได้ไม่ยาก แม้แต่กับผู้ใช้ระดับเริ่มต้น”

คุณสามารถใช้ SQL ในการอธิบายชุดข้อมูล ซึ่งช่วยคุณตอบคำถามต่างๆ เมื่อคุณใช้ SQL คุณจะต้องใช้ไวยากรณ์ให้ถูกต้อง ไวยากรณ์เป็นชุดของกฎที่ใช้รวมองค์ประกอบต่างๆ ของภาษาเข้าไว้ด้วยกันอย่างถูกต้อง ไวยากรณ์ SQL ใช้ไวยากรณ์ภาษาอังกฤษเป็นหลัก และใช้องค์ประกอบต่างๆ เหมือนกันกับไวยากรณ์ Visual Basic for Applications (VBA)

ตัวอย่างเช่น คำสั่ง SQL อย่างง่าย ซึ่งจะเรียกรายการนามสกุลของที่ติดต่อที่มีชื่อว่า Mary อาจมีลักษณะดังนี้

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

หมายเหตุ   SQL ไม่ได้ใช้ในการจัดการข้อมูลได้เพียงอย่างเดียวเท่านั้น แต่ยังใช้สร้างและเปลี่ยนแปลงการออกแบบของวัตถุฐานข้อมูล เช่น ตาราง ได้อีกด้วย ส่วนของ SQL ที่ใช้สร้างและเปลี่ยนแปลงวัตถุฐานข้อมูลมีชื่อเรียกว่า Data Definition Language (DDL) หัวข้อนี้ไม่ได้อธิบายครอบคลุมถึง DDL สำหรับข้อมูลเพิ่มเติม โปรดดูที่บทความ การสร้างหรือแก้ไขตารางหรือดัชนีโดยใช้ แบบสอบถามแบบสร้างข้อกำหนดข้อมูล

คำสั่ง SELECT

เมื่อต้องการอธิบายเกี่ยวกับชุดข้อมูลโดยใช้ SQL คุณจะใช้คำสั่ง SELECT คำสั่ง SELECT ประกอบด้วยคำอธิบายอย่างละเอียดเกี่ยวกับชุดข้อมูลที่คุณต้องการจากฐานข้อมูล ซึ่งประกอบด้วยข้อมูลดังต่อไปนี้

  • ตารางที่มีข้อมูลดังกล่าวอยู่

  • ความสัมพันธ์ของข้อมูลจากแหล่งต่างๆ

  • เขตข้อมูลหรือการคำนวณที่จะแสดงข้อมูล

  • เกณฑ์ที่ข้อมูลจะต้องได้ตรงตามนั้นจึงจะถูกเลือก

  • ผลลัพธ์จะต้องเรียงลำดับหรือไม่และด้วยวิธีใด

ส่วนคำสั่ง SQL

คำสั่ง SQL หนึ่งคำสั่งประกอบด้วยส่วนคำสั่งต่างๆ เหมือนกับประโยค ซึ่งแต่ละส่วนคำสั่งจะทำหนึ่งหน้าที่สำหรับคำสั่ง SQL ส่วนคำสั่งบางอย่างนั้นจำเป็นต้องมีในคำสั่ง SELECT ตารางต่อไปนี้แสดงส่วนคำสั่ง SQL ที่ใช้บ่อย

ส่วนคำสั่ง SQL

หน้าที่

จำเป็นต้องมี

SELECT

แสดงเขตข้อมูลที่มีข้อมูลที่สนใจ

ใช่

FROM

แสดงตารางที่มีเขตข้อมูลที่ปรากฏอยู่ในส่วนคำสั่ง SELECT

ใช่

WHERE

ระบุเกณฑ์เขตข้อมูลที่ใช้เลือกระเบียนที่จะรวมอยู่ในผลลัพธ์

ไม่ใช่

ORDER BY

ระบุวิธีเรียงลำดับผลลัพธ์

ไม่ใช่

GROUP BY

ในคำสั่ง SQL ที่มีฟังก์ชันการรวม จะแสดงเขตข้อมูลที่ไม่ถูกสรุปรวมอยู่ในส่วนคำสั่ง SELECT

เฉพาะเมื่อมีเขตข้อมูลเหล่านี้เท่านั้น

HAVING

ในคำสั่ง SQL ที่มีฟังก์ชันการรวม จะระบุเกณฑ์ซึ่งใช้กับเขตข้อมูลที่ถูกสรุปรวมอยู่ในคำสั่ง SELECT

ไม่ใช่

คำที่ใช้ใน SQL

ส่วนคำสั่ง SQL แต่ละส่วนจะประกอบด้วยคำต่างๆ ซึ่งเทียบได้กับส่วนต่างๆ ของประโยค ตารางต่อไปนี้แสดงชนิดของคำที่ใช้ใน SQL

คำที่ใช้ใน SQL

ส่วนของประโยคที่เทียบได้

คำจำกัดความ

ตัวอย่าง

ตัวระบุ

คำนาม

ชื่อที่คุณใช้ระบุวัตถุฐานข้อมูล เช่น ชื่อของเขตข้อมูล

Customers.[Phone Number]

ตัวดำเนินการ

คำกริยาหรือคำกริยาวิเศษณ์

คำสำคัญที่แทนการกระทำหรือปรับเปลี่ยนการกระทำ

AS

ค่าคงที่

คำนาม

ค่าที่ไม่เปลี่ยนแปลง เช่น ตัวเลข หรือค่า NULL

42

นิพจน์

คำคุณศัพท์

การผสมรวมตัวระบุ ตัวดำเนินการ ค่าคงที่ และฟังก์ชันเข้าด้วยกันเพื่อนำมาประเมินให้ได้ค่าค่าเดียว

>= Products.[Unit Price]

ด้านบนของหน้า

ส่วนคำสั่ง SQL พื้นฐาน: SELECT, FROM และ WHERE

คำสั่ง SQL มีรูปแบบทั่วไป ดังนี้

SELECT field_1
FROM table_1
WHERE criterion_1
;

หมายเหตุ  

  • Access จะไม่สนใจการแบ่งบรรทัดในคำสั่ง SQL อย่างไรก็ตาม คุณควรใช้ส่วนคำสั่งหนึ่งคำสั่งต่อหนึ่งบรรทัด เพื่อช่วยให้ตัวคุณเองและผู้ใช้คนอื่นๆ อ่านคำสั่ง SQL ได้ง่ายขึ้น

  • คำสั่ง SELECT ทุกคำสั่งจะลงท้ายด้วยเครื่องหมายอัฒภาค (;) เครื่องหมายอัฒภาคอาจปรากฏอยู่ที่ท้ายส่วนคำสั่งส่วนสุดท้าย หรือที่บรรทัดใหม่ท้ายคำสั่ง SQL ก็ได้

ตัวอย่างใน Access

ตัวอย่างต่อไปนี้แสดงให้เห็นลักษณะของคำสั่ง SQL สำหรับแบบสอบถามแบบใช้เลือกข้อมูลอย่างง่ายใน Access

แท็บวัตถุ SQL ที่แสดงคำสั่ง SELECT

1. ส่วนคำสั่ง SELECT

2. ส่วนคำสั่ง FROM

3. ส่วนคำสั่ง WHERE

คำสั่ง SQL ในตัวอย่างนี้แปลความได้ว่า "เลือกข้อมูลที่เก็บอยู่ในเขตข้อมูลที่ชื่อ E-mail Address และ Company จากตารางที่ชื่อ Contacts เฉพาะระเบียนที่มีค่าของเขตข้อมูล City เป็น Seattle"

ลองพิจารณาตัวอย่างด้านบนทีละส่วนคำสั่ง เพื่อดูวิธีการทำงานของไวยากรณ์ SQL

ส่วนคำสั่ง SELECT

SELECT [E-mail Address], Company

นี่เป็นส่วนคำสั่ง SELECT ซึ่งประกอบด้วยตัวดำเนินการ (SELECT) ตามด้วยตัวระบุสองค่า ([E-mail Address] และ Company)

ถ้าตัวระบุมีเว้นวรรคหรืออักขระพิเศษ (เช่น "E-mail Address") จะต้องอยู่ในเครื่องหมายวงเล็บเหลี่ยม

ส่วนคำสั่ง SELECT ไม่จำเป็นต้องระบุว่าตารางใดมีเขตข้อมูลนั้น และไม่สามารถระบุเกณฑ์ใดๆ ในการเลือกข้อมูลเข้ามารวมไว้ได้

ส่วนคำสั่ง SELECT จะปรากฏอยู่หน้าส่วนคำสั่ง FROM ในคำสั่ง SELECT เสมอ

ส่วนคำสั่ง FROM

FROM Contacts

นี่เป็นส่วนคำสั่ง FROM ซึ่งประกอบด้วยตัวดำเนินการ (FROM) ตามด้วยตัวระบุ (Contacts)

ส่วนคำสั่ง FROM ไม่ได้แสดงเขตข้อมูลที่ถูกเลือก

ส่วนคำสั่ง WHERE

WHERE City="Seattle"

นี่เป็นส่วนคำสั่ง WHERE ซึ่งประกอบด้วยตัวดำเนินการ (WHERE) ตามด้วยนิพจน์ (City="Seattle")

หมายเหตุ   ส่วนคำสั่ง WHERE ไม่ใช่องค์ประกอบที่จำเป็นต้องมีของคำสั่ง SELECT ซึ่งต่างจากส่วนคำสั่ง SELECT และ FROM

SQL ช่วยให้คุณทำหลายๆ สิ่งได้สำเร็จโดยใช้ส่วนคำสั่ง SELECT, FROM และ WHERE ข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่คุณใช้ส่วนคำสั่งเหล่านี้แสดงอยู่ในส่วนต่างๆ ด้านล่างนี้ที่ส่วนท้ายของบทความนี้

ข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง SELECT

ข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง FROM

ข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง WHERE

ด้านบนของหน้า

การเรียงลำดับผลลัพธ์: ORDER BY

ใน Access คุณสามารถเรียงลำดับผลลัพธ์แบบสอบถามในแผ่นข้อมูลได้ เช่นเดียวกับใน Microsoft Office Excel รวมทั้งสามารถระบุในแบบสอบถามเกี่ยวกับวิธีที่คุณต้องการเรียงลำดับผลลัพธ์เมื่อเรียกใช้แบบสอบถามได้ โดยใช้ส่วนคำสั่ง ORDER BY ถ้าคุณใช้ส่วนคำสั่ง ORDER BY ส่วนคำสั่งนี้จะอยู่เป็นลำดับสุดท้ายในคำสั่ง SQL

ส่วนคำสั่ง ORDER BY ประกอบด้วยรายการเขตข้อมูลที่คุณต้องการใช้ในการเรียงลำดับ โดยจะเรียงตามลำดับเดียวกับที่คุณต้องการนำการเรียงลำดับไปใช้

ตัวอย่างเช่น สมมติว่าคุณต้องการเรียงลำดับผลลัพธ์ตามค่าของเขตข้อมูล Company จากมากไปหาน้อยก่อน ในกรณีที่มีระเบียนที่มีค่า Company ซ้ำกัน แล้วจึงเรียงลำดับตามค่าในเขตข้อมูล E-mail Address จากน้อยไปหามาก ส่วนคำสั่ง ORDER BY จะมีลักษณะดังนี้

ORDER BY Company DESC, [E-mail Address]

หมายเหตุ   ตามค่าเริ่มต้นแล้ว Access จะเรียงลำดับค่าจากน้อยไปหามาก (A-Z หรือน้อยที่สุดไปหามากที่สุด) คุณสามารถใช้คำสำคัญ DESC เพื่อเรียงลำดับค่าจากมากไปหาน้อยแทนได้

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง ORDER BY โปรดดูที่หัวข้อ ส่วนคำสั่ง ORDER BY

ด้านบนของหน้า

การทำงานกับข้อมูลสรุป: GROUP BY และ HAVING

บางครั้ง เมื่อคุณต้องการทำงานกับข้อมูลสรุป เช่น ยอดขายรวมในหนึ่งเดือน หรือสินค้าที่มีราคาแพงที่สุดในสินค้าคงคลัง คุณสามารถใช้ฟังก์ชันการรวมกับเขตข้อมูลในส่วนคำสั่ง SELECT ได้ ตัวอย่างเช่น ถ้าคุณต้องการให้แบบสอบถามแสดงจำนวนที่อยู่อีเมลของแต่ละบริษัท ส่วนคำสั่ง SELECT ของคุณอาจมีลักษณะดังนี้

SELECT COUNT([E-mail Address]), Company

ฟังก์ชันการรวมที่คุณสามารถใช้ได้จะขึ้นอยู่กับชนิดของข้อมูลที่อยู่ในเขตข้อมูลหรือนิพจน์ที่คุณต้องการใช้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชันการรวมที่พร้อมใช้งาน ให้ดูบทความ ฟังก์ชันการรวม SQL

การระบุเขตข้อมูลที่ไม่ได้ใช้ในฟังก์ชันการรวม: ส่วนคำสั่ง GROUP BY

โดยปกติแล้ว เมื่อคุณใช้ฟังก์ชันการรวม คุณจะต้องสร้างส่วนคำสั่ง GROUP BY ด้วย ส่วนคำสั่ง GROUP BY จะแสดงเขตข้อมูลทั้งหมดที่คุณไม่นำไปใช้กับฟังก์ชันการรวม ถ้าคุณใช้ฟังก์ชันการรวมกับเขตข้อมูลทั้งหมดในแบบสอบถาม คุณไม่จำเป็นต้องสร้างส่วนคำสั่ง GROUP BY

ส่วนคำสั่ง GROUP BY จะอยู่ต่อจากส่วนคำสั่ง WHERE หรือต่อจากส่วนคำสั่ง FROM ถ้าไม่มีส่วนคำสั่ง WHERE โดยส่วนคำสั่ง GROUP BY นี้จะแสดงเขตข้อมูลตามที่ปรากฏในส่วนคำสั่ง SELECT

ตัวอย่างเช่น ต่อจากตัวอย่างที่แล้ว ถ้าส่วนคำสั่ง SELECT ใช้ฟังก์ชันการรวมกับ [E-mail Address] แต่ไม่ได้ใช้กับ Company ส่วนคำสั่ง GROUP BY ของคุณจะมีลักษณะดังนี้

GROUP BY Company

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง GROUP BY โปรดดูที่หัวข้อ ส่วนคำสั่ง GROUP BY

การจำกัดค่าการรวมโดยใช้เกณฑ์กลุ่ม: ส่วนคำสั่ง HAVING

ถ้าคุณต้องการใช้เกณฑ์เพื่อจำกัดผลลัพธ์ของคุณ แต่เขตข้อมูลที่คุณต้องการใช้กับเกณฑ์นั้นถูกใช้ในฟังก์ชันการรวมแล้ว คุณจะไม่สามารถใช้ส่วนคำสั่ง WHERE ได้ แต่คุณสามารถใช้ส่วนคำสั่ง HAVING แทนได้ ส่วนคำสั่ง HAVING นั้นทำงานคล้ายกับส่วนคำสั่ง WHERE แต่ใช้กับข้อมูลการรวม

ตัวอย่างเช่น สมมติว่าคุณใช้ฟังก์ชัน AVG (ซึ่งจะคำนวณหาค่าเฉลี่ย) กับเขตข้อมูลแรกในส่วนคำสั่ง SELECT ของคุณ

SELECT COUNT([E-mail Address]), Company

ถ้าคุณต้องการให้แบบสอบถามจำกัดผลลัพธ์ตามค่าของฟังก์ชัน COUNT คุณไม่สามารถใช้เกณฑ์กับเขตข้อมูลดังกล่าวในส่วนคำสั่ง WHERE ได้ แต่คุณสามารถใช้เกณฑ์นั้นในส่วนคำสั่ง HAVING แทนได้ ตัวอย่างเช่น ถ้าคุณต้องการให้แบบสอบถามส่งกลับพียงแถวที่มีที่อยู่อีเมลที่เกี่ยวข้องกับบริษัทหนึ่งๆ มากกว่าหนึ่งรายการ ส่วนคำสั่ง HAVING อาจมีลักษณะดังนี้

HAVING COUNT([E-mail Address])>1

หมายเหตุ   แบบสอบถามสามารถมีทั้งส่วนคำสั่ง WHERE และส่วนคำสั่ง HAVING ได้ โดยเกณฑ์สำหรับเขตข้อมูลที่ไม่ได้ใช้ในฟังก์ชันการรวมจะอยู่ในส่วนคำสั่ง WHERE และเกณฑ์สำหรับเขตข้อมูลที่ใช้กับฟังก์ชันการรวมจะอยู่ในส่วนคำสั่ง HAVING

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง HAVING โปรดดูที่หัวข้อ ส่วนคำสั่ง HAVING

ด้านบนของหน้า

การรวมผลลัพธ์แบบสอบถาม: UNION

เมื่อคุณต้องการตรวจทานข้อมูลทั้งหมดที่ได้รับจากแบบสอบถามแบบใช้เลือกข้อมูล ซึ่งมีลักษณะคล้ายกันหลายรายการเป็นชุดรวมกัน คุณสามารถใช้ตัวดำเนินการ UNION ได้

ตัวดำเนินการ UNION ช่วยให้คุณรวมคำสั่ง SELECT สองคำสั่งให้เป็นคำสั่งเดียวได้ คำสั่ง SELECT ที่คุณรวมเข้าด้วยจะต้องมีจำนวนเขตข้อมูลผลลัพธ์เท่ากัน อยู่ในลำดับเดียวกัน และมีชนิดข้อมูลเหมือนกันหรือเข้ากันได้ เมื่อคุณเรียกใช้แบบสอบถาม ข้อมูลจากชุดเขตข้อมูลต่างๆ ที่เกี่ยวข้องจะถูกรวมเป็นเขตข้อมูลผลลัพธ์หนึ่งเขตข้อมูล เพื่อให้ผลลัพธ์แบบสอบถามมีจำนวนเขตข้อมูลเท่ากับคำสั่ง Select แต่ละคำสั่ง

หมายเหตุ   ในการสร้างแบบสอบถามแบบร่วมนี้ จะถือว่าตัวเลขและข้อความเป็นชนิดข้อมูลที่เข้ากันได้

เมื่อคุณใช้ตัวดำเนินการ UNION คุณยังสามารถระบุว่าผลลัพธ์แบบสอบถามควรรวมแถวที่ซ้ำกัน (ถ้ามี) ด้วยหรือไม่ โดยใช้คำสำคัญ ALL

ไวยากรณ์ SQL พื้นฐานสำหรับแบบสอบถามแบบร่วมที่รวมคำสั่ง SELECT สองคำสั่งเข้าด้วยกัน มีลักษณะดังนี้

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

ตัวอย่างเช่น สมมติว่าคุณมีตารางชื่อ Products และอีกตารางหนึ่งชื่อ Services ทั้งสองตารางมีเขตข้อมูลซึ่งประกอบด้วยชื่อของผลิตภัณฑ์หรือบริการ ราคา การรับประกันหรือการรับรอง และข้อมูลแสดงว่าคุณนำเสนอผลิตภัณฑ์หรือบริการเป็นแบบเอกสิทธิ์หรือไม่ แม้ว่าตาราง Products จะเก็บข้อมูลการรับประกัน ส่วนตาราง Services เก็บข้อมูลการรับรอง แต่ข้อมูลพื้นฐานจะเหมือนกัน (กล่าวคือผลิตภัณฑ์หรือบริการนั้นๆ มีคำสัญญาด้านคุณภาพหรือไม่) คุณสามารถใช้แบบสอบถามแบบร่วม เช่น แบบสอบถามต่อไปนี้ เพื่อรวมเขตข้อมูลสี่เขตข้อมูลจากสองตาราง

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีรวมคำสั่ง SELECT โดยใช้ตัวดำเนินการ UNION โปรดดูที่บทความ การรวมผลลัพธ์ของหลายๆ แบบสอบถามการเลือกข้อมูลโดยใช้แบบสอบถามแบบร่วม

ด้านบนของหน้า

ข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง SELECT

ในคำสั่ง SELECT ส่วนคำสั่ง SELECT จะแสดงรายการเขตข้อมูลที่มีข้อมูลที่คุณต้องการใช้

ใช้เครื่องหมายวงเล็บเหลี่ยมล้อมรอบตัวระบุ

คุณสามารถใช้เครื่องหมายวงเล็บเหลี่ยมล้อมรอบชื่อของเขตข้อมูลในส่วนคำสั่ง SELECT ได้ ถ้าชื่อดังกล่าวไม่มีเว้นวรรคหรืออักขระพิเศษ (เช่น เครื่องหมายวรรคตอน) คุณจะใส่เครื่องหมายวงเล็บเหลี่ยมหรือไม่ก็ได้ แต่ถ้าชื่อนั้นมีเว้นวรรคหรืออักขระพิเศษ คุณต้องใช้เครื่องหมายวงเล็บเหลี่ยม

เคล็ดลับ   ชื่อที่มีการเว้นวรรคเป็นชื่อที่อ่านง่ายและช่วยประหยัดเวลาเมื่อคุณออกแบบฟอร์มและรายงาน แต่อาจทำให้คุณต้องพิมพ์มากขึ้นเมื่อเขียนคำสั่ง SQL คุณควรพิจารณาถึงข้อเท็จจริงนี้เมื่อคุณตั้งค่าวัตถุในฐานข้อมูลของคุณ

ถ้าคำสั่ง SQL มีเขตข้อมูลชื่อเดียวกันหลายเขตข้อมูล คุณจะต้องเพิ่มชื่อแหล่งข้อมูลของแต่ละเขตข้อมูลลงในชื่อเขตข้อมูลในส่วนคำสั่ง SELECT ด้วย คุณใช้ชื่อเดียวกันนี้สำหรับแหล่งข้อมูลที่คุณใช้ในส่วนคำสั่ง FROM

เลือกเขตข้อมูลทั้งหมด

เมื่อคุณต้องการรวมเขตข้อมูลทั้งหมดจากแหล่งข้อมูลหนึ่ง คุณสามารถแสดงเขตข้อมูลทั้งหมดทีละรายการในส่วนคำสั่ง SELECT หรือจะใช้อักขระตัวแทนเครื่องหมายดอกจัน (*) ก็ได้ เมื่อคุณใช้เครื่องหมายดอกจัน Access จะหาว่าเมื่อเรียกใช้แบบสอบถาม แหล่งข้อมูลนั้นมีเขตข้อมูลใดบ้าง และจะรวมเขตข้อมูลทั้งหมดนั้นไว้ในแบบสอบถาม ซึ่งช่วยให้แน่ใจได้ว่าเมื่อมีการเพิ่มเขตข้อมูลใหม่ลงในแหล่งข้อมูล ข้อมูลในแบบสอบถามจะเป็นข้อมูลล่าสุดอยู่เสมอ

คุณสามารถใช้เครื่องหมายดอกจันในคำสั่ง SQL กับแหล่งข้อมูลแหล่งเดียวหรือหลายแหล่งได้ ถ้าคุณใช้เครื่องหมายดอกจันและมีแหล่งข้อมูลอยู่หลายแหล่ง คุณต้องใช้ชื่อแหล่งข้อมูลรวมกับเครื่องหมายดอกจัน เพื่อให้ Access หาได้ว่าแหล่งข้อมูลใดที่จะรวมเขตข้อมูลทั้งหมด

ตัวอย่างเช่น สมมติว่าคุณต้องการเลือกเขตข้อมูลทั้งหมดจากตาราง Orders แต่เฉพาะที่อยู่อีเมลจากตาราง Contacts ส่วนคำสั่ง SELECT อาจมีลักษณะดังนี้

SELECT Orders.*, Contacts.[E-mail Address]

หมายเหตุ   คุณควรติดตามดูว่าคุณเลือกใช้เครื่องหมายดอกจันเมื่อใด ถ้าในภายหลังมีการเพิ่มเขตข้อมูลใหม่ลงในแหล่งข้อมูลและคุณไม่ได้คาดการณ์ไว้ แบบสอบถามของคุณอาจไม่ให้ผลลัพธ์ตามที่คุณต้องการ

เลือกค่าที่ไม่ซ้ำกัน

ถ้าคุณรู้ว่าคำสั่งของคุณจะเลือกข้อมูลที่ซ้ำซ้อน และคุณต้องการเห็นเฉพาะค่าที่ไม่ซ้ำกันเท่านั้น คุณสามารถใช้คำสำคัญ DISTINCT ในส่วนคำสั่ง SELECT ของคุณได้ ตัวอย่างเช่น สมมติว่าลูกค้าของคุณแต่ละคนเป็นตัวแทนสิ่งที่คุณสนใจหลายๆ เรื่อง โดยในบางเรื่องใช้หมายเลขโทรศัพท์เดียวกัน ถ้าคุณต้องการให้แน่ใจว่าคุณจะเห็นหมายเลขโทรศัพท์แต่ละหมายเลขเพียงครั้งเดียว ส่วนคำสั่ง SELECT ของคุณจะมีลักษณะดังนี้

SELECT DISTINCT [txtCustomerPhone]

ใช้ชื่อแทนสำหรับเขตข้อมูลหรือนิพจน์: คำสำคัญ AS

คุณสามารถเปลี่ยนป้ายชื่อที่แสดงของเขตข้อมูลใดๆ ในมุมมองแผ่นข้อมูลได้โดยใช้คำสำคัญ AS และนามแฝงของเขตข้อมูลในส่วนคำสั่ง SELECT นามแฝงของเขตข้อมูลเป็นชื่อที่คุณกำหนดให้กับเขตข้อมูลในแบบสอบถามเพื่อให้สามารถอ่านผลลัพธ์ได้ง่ายยิ่งขึ้น ตัวอย่างเช่น ถ้าคุณต้องการเลือกข้อมูลจากเขตข้อมูลชื่อ txtCustPhone และเขตข้อมูลนี้มีหมายเลขโทรศัพท์ของลูกค้า คุณสามารถทำให้ผลลัพธ์อ่านได้ง่ายขึ้นได้โดยใช้นามแฝงของเขตข้อมูลในคำสั่ง SELECT ดังนี้

SELECT [txtCustPhone] AS [Customer Phone]

หมายเหตุ   คุณต้องใช้นามแฝงของเขตข้อมูลเมื่อคุณใช้นิพจน์ในส่วนคำสั่ง SELECT

การเลือกโดยใช้นิพจน์

บางครั้ง คุณอาจต้องการดูผลการคำนวณข้อมูลของคุณ หรือเรียกข้อมูลบางส่วนของเขตข้อมูล ตัวอย่างเช่น สมมติว่าคุณต้องการส่งกลับปีเกิดของลูกค้า โดยอาศัยข้อมูลในเขตข้อมูล BirthDate ในฐานข้อมูล ส่วนคำสั่ง SELECT อาจมีลักษณะดังนี้

SELECT DatePart("yyyy",[BirthDate]) AS [Birth Year]

นิพจน์นี้ประกอบด้วยฟังก์ชัน DatePart และอาร์กิวเมนต์สองค่า ได้แก่ "yyyy" (ค่าคงที่) และ [BirthDate] (ตัวระบุ)

คุณสามารถใช้นิพจน์ที่ถูกต้องใดๆ เป็นเขตข้อมูลได้ ถ้านิพจน์นั้นให้ผลลัพธ์เป็นค่าค่าเดียวเมื่อได้รับค่าป้อนเข้าค่าเดียว

ด้านบนของหน้า

ข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง FROM

ในคำสั่ง SELECT ส่วนคำสั่ง FROM จะระบุตารางหรือแบบสอบถามที่มีข้อมูลที่จะใช้ในส่วนคำสั่ง SELECT

สมมติว่าคุณต้องการทราบหมายเลขโทรศัพท์ของลูกค้าคนหนึ่ง โดยสมมติให้ตารางที่มีเขตข้อมูลที่เก็บข้อมูลนี้อยู่มีชื่อว่า tblCustomer ส่วนคำสั่ง FROM จะมีลักษณะดังต่อไปนี้

FROM tblCustomer

ใช้เครื่องหมายวงเล็บเหลี่ยมล้อมรอบตัวระบุ

คุณสามารถใช้เครื่องหมายวงเล็บเหลี่ยมล้อมรอบชื่อได้ ถ้าชื่อดังกล่าวไม่มีเว้นวรรคหรืออักขระพิเศษ (เช่น เครื่องหมายวรรคตอน) คุณจะใส่เครื่องหมายวงเล็บเหลี่ยมหรือไม่ก็ได้ แต่ถ้าชื่อนั้นมีเว้นวรรคหรืออักขระพิเศษ คุณต้องใช้เครื่องหมายวงเล็บเหลี่ยม

เคล็ดลับ   ชื่อที่มีการเว้นวรรคเป็นชื่อที่อ่านง่ายและช่วยประหยัดเวลาเมื่อคุณออกแบบฟอร์มและรายงาน แต่อาจทำให้คุณต้องพิมพ์มากขึ้นเมื่อเขียนคำสั่ง SQL คุณควรพิจารณาถึงข้อเท็จจริงนี้เมื่อคุณตั้งค่าวัตถุในฐานข้อมูลของคุณ

ใช้ชื่อแทนสำหรับแหล่งข้อมูล

คุณสามารถใช้ชื่ออื่นเพื่ออ้างอิงถึงแหล่งข้อมูลในคำสั่ง SELECT ได้โดยใช้นามแฝงของตารางในส่วนคำสั่ง FROM นามแฝงของตารางเป็นชื่อที่คุณกำหนดให้กับแหล่งข้อมูลในแบบสอบถามเมื่อคุณใช้นิพจน์เป็นแหล่งข้อมูล หรือเพื่อทำให้สามารถพิมพ์และอ่านคำสั่ง SQL ได้ง่ายขึ้น ซึ่งจะเป็นประโยชน์อย่างยิ่งเมื่อชื่อของแหล่งข้อมูลนั้นยาวมากหรือพิมพ์ยาก โดยเฉพาะเมื่อมีหลายเขตข้อมูลที่มีชื่อเดียวกันนั้นอยู่ในตารางต่างๆ

ตัวอย่างเช่น ถ้าคุณต้องการเลือกข้อมูลจากสองเขตข้อมูล ซึ่งทั้งสองรายการนั้นต่างมีชื่อว่า ID โดยเขตข้อมูลหนึ่งมาจากตาราง tblCustomer และอีกเขตข้อมูลหนึ่งมาจากตาราง tblOrder ส่วนคำสั่ง SELECT ของคุณอาจมีลักษณะดังต่อไปนี้

SELECT [tblCustomer].[ID], [tblOrder].[ID]

การใช้นามแฝงของตารางในส่วนคำสั่ง FROM ช่วยให้พิมพ์แบบสอบถามได้ง่ายขึ้น ส่วนคำสั่ง FROM ที่ใช้นามแฝงของตาราง อาจมีลักษณะดังต่อไปนี้

FROM [tblCustomer] AS [C], [tblOrder] AS [O]

จากนั้น คุณสามารถนำนามแฝงของตารางเหล่านั้นมาใช้ในส่วนคำสั่ง SELECT ของคุณได้ โดยมีลักษณะดังต่อไปนี้

SELECT [C].[ID], [O].[ID]

หมายเหตุ   เมื่อคุณใช้นามแฝงของตาราง คุณสามารถอ้างอิงถึงแหล่งข้อมูลในคำสั่ง SQL ของคุณได้โดยใช้นามแฝงนี้หรือใช้ชื่อเต็มของแหล่งข้อมูลนั้น

รวมข้อมูลที่เกี่ยวข้อง

เมื่อคุณต้องการหาวิธีที่จะรวมคู่ของระเบียนต่างๆ จากแหล่งข้อมูลสองแห่งเข้าด้วยกันเป็นระเบียนเดียวในผลลัพธ์แบบสอบถาม คุณสามารถใช้การรวมได้ การรวมเป็นการดำเนินการของ SQL ที่ระบุว่าความสัมพันธ์ของแหล่งข้อมูลสองแหล่งเป็นอย่างไร และจะรวมข้อมูลจากแหล่งข้อมูลหนึ่งเมื่อไม่มีข้อมูลที่สอดคล้องกันจากอีกแหล่งข้อมูลหนึ่งเข้ามาหรือไม่

เมื่อต้องการรวมข้อมูลจากแหล่งข้อมูลสองแห่ง คุณสามารถใช้การดำเนินการรวมกับเขตข้อมูลที่แหล่งข้อมูลทั้งสองมีเหมือนกันได้ เมื่อข้อมูลที่เก็บอยู่ในเขตข้อมูลนี้มีค่าตรงกัน ข้อมูลจากระเบียนทั้งสองจะถูกรวมไว้ในผลลัพธ์

นอกจากการรวมข้อมูลแล้ว คุณยังสามารถใช้การรวมนี้เพื่อระบุว่าจะรวมระเบียนจากตารางใดตารางหนึ่ง เมื่อไม่มีระเบียนที่สอดคล้องกันในตารางที่สัมพันธ์กันหรือไม่

ตัวอย่างเช่น สมมติว่าคุณต้องการใช้ข้อมูลจากตารางสองตารางในแบบสอบถาม ซึ่งได้แก่ tblCustomer และ tblOrder โดยทั้งสองตารางมีเขตข้อมูล CustomerID ที่ใช้ระบุถึงลูกค้า แต่ละระเบียนในตาราง tblCustomer อาจมีหนึ่งหรือหลายระเบียนที่สอดคล้องกันในตาราง tblOrder table และค่าที่สอดคล้องกันนั้นสามารถกำหนดได้โดยค่าในเขตข้อมูล CustomerID

ถ้าคุณต้องการรวมตารางเพื่อให้แบบสอบถามรวมระเบียนจากตารางทั้งสองเข้าด้วยกัน โดยยกเว้นระเบียนจากตารางหนึ่งถ้าไม่มีระเบียนที่สอดคล้องกันในอีกตารางหนึ่ง ส่วนคำสั่ง FROM ของคุณอาจมีลักษณะดังต่อไปนี้ (เพิ่มตัวแบ่งบรรทัดเพื่อให้อ่านได้ง่าย)

FROM [tblCustomer] INNER JOIN [tblOrder]
ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

ใน Microsoft Office Access การรวมจะเกิดขึ้นในส่วนคำสั่ง FROM ของคำสั่ง SELECT การรวมมีอยู่สองชนิด คือ การรวมภายใน และการรวมภายนอก ส่วนต่อไปนี้จะอธิบายเกี่ยวกับการรวมทั้งสองชนิด

การรวมภายใน

การรวมภายในเป็นการรวมชนิดที่ใช้บ่อยที่สุด เมื่อเรียกใช้แบบสอบถามที่มีการรวมภายใน มีเพียงระเบียนที่มีค่าอยู่ในทั้งสองตารางที่ถูกรวมเท่านั้นที่จะถูกนำมารวมอยู่ในผลลัพธ์แบบสอบถาม

การรวมภายในมีไวยากรณ์ดังต่อไปนี้ (เพิ่มตัวแบ่งบรรทัดเพื่อให้อ่านได้ง่าย)

FROM table1 INNER JOIN table2
ON table1.field1 compopr table2.field2

ตารางต่อไปนี้อธิบายถึงส่วนต่างๆ ของการดำเนินการ INNER JOIN

ส่วน

คำอธิบาย

table1, table2

ชื่อของตารางที่ระเบียนถูกรวม

field1, field2

ชื่อของเขตข้อมูลที่นำมารวมกัน ถ้าไม่ใช่ตัวเลข เขตข้อมูลเหล่านั้นจะต้องมีชนิดข้อมูลเดียวกัน และมีข้อมูลประเภทเดียวกัน แต่ไม่จำเป็นต้องมีชื่อเหมือนกัน

compopr

ตัวดำเนินการเปรียบเทียบเชิงสัมพันธ์ใดๆ ได้แก่ "=", "<", ">", "<=", ">=" หรือ "<>"

การรวมภายนอก

การรวมภายนอกคล้ายกับการรวมภายใน กล่าวคือ การรวมทั้งสองชนิดจะบอกแบบสอบถามถึงวิธีรวมข้อมูลจากแหล่งข้อมูลสองแห่งเข้าด้วยกัน แต่มีส่วนที่แตกต่างกัน คือ การระบุว่าจะรวมข้อมูลเมื่อไม่มีค่าที่มีเหมือนกันหรือไม่ การรวมภายนอกเป็นแบบมีทิศทาง กล่าวคือ คุณสามารถระบุว่าจะรวมระเบียนทั้งหมดจากแหล่งข้อมูลแรกที่ระบุไว้ในการรวม (เรียกว่า การรวมด้านซ้าย) หรือจะรวมระเบียนทั้งหมดจากแหล่งข้อมูลแห่งที่สองไว้ในการรวม (เรียกว่าการรวมด้านขวา)

การรวมภายนอกมีไวยากรณ์ดังต่อไปนี้

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1compopr table2.field2

ตารางต่อไปนี้อธิบายถึงส่วนต่างๆ ของการดำเนินการ LEFT JOIN และ RIGHT JOIN

ส่วน

คำอธิบาย

table1, table2

ชื่อของตารางที่ระเบียนถูกรวม

field1, field2

ชื่อของเขตข้อมูลที่นำมารวมกัน เขตข้อมูลจะต้องมีชนิดข้อมูลเดียวกัน และมีข้อมูลประเภทเดียวกัน แต่ไม่จำเป็นต้องมีชื่อเหมือนกัน

compopr

ตัวดำเนินการเปรียบเทียบเชิงสัมพันธ์ใดๆ ได้แก่ "=", "<", ">", "<=", ">=" หรือ "<>"

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรวม โปรดดูที่บทความ การรวมตารางและแบบสอบถาม

ด้านบนของหน้า

ข้อมูลเพิ่มเติมเกี่ยวกับส่วนคำสั่ง WHERE

เมื่อคุณต้องการใช้ข้อมูลเพื่อจำกัดจำนวนระเบียนที่ส่งกลับในแบบสอบถาม คุณสามารถใช้เกณฑ์แบบสอบถามในส่วนคำสั่ง WHERE ของคำสั่ง SELECT ได้ เกณฑ์ของแบบสอบถามมีลักษณะคล้ายคลึงกับสูตร คือ เป็นสตริงที่อาจประกอบด้วยการอ้างอิงเขตข้อมูล ตัวดำเนินการ และค่าคงที่ โดยเกณฑ์แบบสอบถามเป็นนิพจน์ชนิดหนึ่ง

ตารางต่อไปนี้จะแสดงตัวอย่างเกณฑ์และอธิบายวิธีการทำงานของเกณฑ์เหล่านั้น

เกณฑ์

คำอธิบาย

>25 และ <50

เกณฑ์นี้ใช้กับเขตข้อมูลตัวเลข เช่น Price หรือ UnitsInStock โดยจะรวมเฉพาะระเบียนที่เขตข้อมูลมีค่ามากกว่า 25 แต่น้อยกว่า 50

DateDiff ("yyyy", [BirthDate], Date()) > 30

เกณฑ์นี้ใช้กับเขตข้อมูลวันที่/เวลา เช่น BirthDate เฉพาะระเบียนที่จำนวนปีระหว่างวันเกิดของบุคคลและวันที่ของวันนี้มีค่ามากกว่า 30เท่านั้นที่จะถูกรวมไว้ในผลลัพธ์แบบสอบถาม

Is Null

เกณฑ์นี้สามารถใช้กับเขตข้อมูลชนิดใดๆ ก็ได้เพื่อแสดงระเบียนที่เขตข้อมูลมีค่าเป็น Null

ดังที่แสดงในตารางที่แล้ว เกณฑ์อาจมีลักษณะแตกต่างกันมาก ขึ้นอยู่กับชนิดข้อมูลของเขตข้อมูลซึ่งนำเกณฑ์เหล่านั้นไปใช้ และความต้องการที่เฉพาะเจาะจงของคุณ โดยบางเกณฑ์จะเป็นแบบง่ายๆ และใช้ตัวดำเนินการและค่าคงที่พื้นฐาน ในขณะที่เกณฑ์อื่นๆ มีลักษณะซับซ้อน และใช้ฟังก์ชัน ตัวดำเนินการพิเศษและการอ้างอิงเขตข้อมูล

  ถ้ามีการใช้เขตข้อมูลกับฟังก์ชันการรวม คุณจะไม่สามารถระบุเกณฑ์สำหรับเขตข้อมูลดังกล่าวในส่วนคำสั่ง WHERE ได้ แต่คุณสามารถใช้ส่วนคำสั่ง HAVING แทนเพื่อระบุเกณฑ์สำหรับเขตข้อมูลที่ถูกรวมได้ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ส่วน การทำงานกับข้อมูลสรุป: GROUP BY และ HAVING

ไวยากรณ์ส่วนคำสั่ง WHERE

ส่วนคำสั่ง WHERE มีไวยากรณ์พื้นฐานดังต่อไปนี้

WHERE field = criterion

ตัวอย่างเช่น สมมติว่าคุณต้องการหมายเลขโทรศัพท์ของลูกค้าคนหนึ่ง แต่คุณจำได้เพียงว่าลูกค้าคนดังกล่าวมีนามสกุลว่า Bagel แทนที่จะต้องดูหมายเลขโทรศัพท์ทั้งหมดในฐานข้อมูล คุณสามารถใช้ส่วนคำสั่ง WHERE เพื่อจำกัดผลลัพธ์ที่ได้และทำให้ค้นหาหมายเลขโทรศัพท์ที่คุณต้องการได้ง่ายยิ่งขึ้น สมมติว่านามสกุลถูกเก็บอยู่ในเขตข้อมูลที่ชื่อ LastName ส่วนคำสั่ง WHERE ของคุณจะมีลักษณะดังนี้

WHERE [LastName]='Bagel'

หมายเหตุ   คุณไม่จำเป็นต้องใช้เกณฑ์เป็นค่าที่เทียบเท่ากันในส่วนคำสั่ง WHERE เพียงอย่างเดียว คุณสามารถใช้ตัวดำเนินการเปรียบเทียบอื่นๆ ได้ เช่น มากกว่า (>) หรือน้อยกว่า (<) ตัวอย่างเช่น WHERE [Price]>100

ใช้ส่วนคำสั่ง WHERE เพื่อรวมแหล่งข้อมูล

บางครั้ง คุณอาจต้องการรวมแหล่งข้อมูลเข้าด้วยกันโดยยึดตามเขตข้อมูลที่มีข้อมูลตรงกัน แต่มีชนิดข้อมูลต่างกัน ตัวอย่างเช่น เขตข้อมูลในตารางหนึ่งอาจมีชนิดข้อมูลเป็นตัวเลข และคุณต้องการเปรียบเทียบเขตข้อมูลดังกล่าวกับเขตข้อมูลในอีกตารางหนึ่งที่มีชนิดข้อมูลเป็นข้อความ

คุณไม่สามารถสร้างการรวมระหว่างเขตข้อมูลที่มีชนิดข้อมูลต่างกันได้ ถ้าต้องการรวมข้อมูลจากแหล่งข้อมูลสองแห่งโดยยึดตามค่าในเขตข้อมูลที่มีชนิดข้อมูลต่างกัน คุณสามารถสร้างส่วนคำสั่ง WHERE ที่ใช้เขตข้อมูลหนึ่งเป็นเกณฑ์ของอีกเขตข้อมูลหนึ่งได้ โดยใช้คำสำคัญ LIKE

ตัวอย่างเช่น สมมติว่าคุณต้องการใช้ข้อมูลจาก table1 และ table2 แต่เฉพาะเมื่อข้อมูลใน field1 (เขตข้อมูลชนิดข้อความ ใน table1) ตรงกับข้อมูลใน field2 (เขตข้อมูลชนิดตัวเลข ใน table2) เท่านั้น ส่วนคำสั่ง WHERE ของคุณจะมีลักษณะดังนี้

WHERE field1 LIKE field2

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างเกณฑ์เพื่อใช้ในส่วนคำสั่ง WHERE โปรดดูที่บทความ ตัวอย่างของเกณฑ์แบบสอบถาม

ด้านบนของหน้า

นำไปใช้กับ: Access 2010



ข้อมูลนี้เป็นประโยชน์หรือไม่

ใช่ ไม่ใช่

เราควรปรับปรุงแก้ไขอย่างไร

255 อักขระที่เหลืออยู่

เพื่อปกป้องความเป็นส่วนตัวของคุณ โปรดอย่ารวมข้อมูลที่ติดต่อในคำติชมของคุณ ช่วยเรารีวิว นโยบายความเป็นส่วนตัว.

ขอบคุณสำหรับคำติชมของคุณ!

ทรัพยากรการสนับสนุน

เปลี่ยนภาษา