Apichart Nakarungutti
The Cake is a Lie
สำหรับข้อมูลที่ใช้จะใช้ข้อมูลตามนี้ ขอตั้งชื่อตารางว่า application
id | name | category | developer | year |
---|---|---|---|---|
1 | Windows | OS | Microsoft | 1985 |
2 | OS X | OS | Apple Inc. | 2001 |
3 | Microsoft Office | Office Suite | Microsoft | 1990 |
4 | Libre Office | Office Suite | The Document Foundation | 2011 |
5 | Adobe Photoshop | Graphic Editor | Adobe | 1990 |
6 | GIMP | Graphic Editor | The GIMP Development Team | 1996 |
การนำข้อมูลมาแสดงจะใช้ SELECT ... FROM ...
เป็นหลัก โดยอาจจะกำหนดเงื่อนไขผ่านทาง WHERE
(ที่จริงแล้วคำสั่ง SQL จะใช้ตัวพิมพ์เล็ก หรือตัวพิมพ์ใหญ่ก็ให้ผลเหมือนกัน เพียงแต่ใช้ตัวพิมพ์ใหญ่จะอ่านได้เข้าใจง่ายกว่า)
SELECT *
FROM application
ผลที่ได้จะเหมือนกับตารางด้านบน คือ เอาข้อมูลทุกอย่างมาแสดง
SELECT name,year
FROM application
อันนี้เลือกเอาจะเฉพาะคอลัมภ์ name กับ year มาแสดง
name | year |
---|---|
Windows | 1985 |
OS X | 2001 |
Microsoft Office | 1990 |
Libre Office | 2011 |
Adobe Photoshop | 1990 |
GIMP | 1996 |
SELECT DISTINCT category
FROM application
อันนี้จะแสดงข้อมูลที่ไม่ซ้ำกันเท่านั้น ที่ซ้ำตัดทิ้งไป อาจะใช้หาว่า ลูกค้าของบริษัทเป็นคนจังหวัดใดบ้าง เป็นต้น
category |
---|
OS |
Office Suite |
Graphic Editor |
Graphic Editor |
แต่ถ้าหากจะกำหนดเงื่อนไขว่าเอาข้อมูลที่มีอย่างนั้นอย่างนี้จะต้องใช้ WHERE
เข้าช่วย โดยใช้การเปรียบเทียบทั่ว ๆ ไป รวมทั้ง BETWEEN
(ระหว่างค่า 2 ค่า) LIKE
(ค้นหาโดยใช้ pattern) และ IN
(ข้อมูลในคอลัมภ์เป็นค่าใดค่าหนึ่งในนี้)
หมายเหตุ: สำหรับการเปรียบเทียบ ไม่เท่ากับ ระบบฐานข้อมูลบางตัวใช้ <>
แต่บางตัวใช้ !=
SELECT *
FROM application
WHERE year >= 2000
ผลที่ได้คือ จะแสดงเฉพาะแอพที่เปิดตัวตั้งแต่ปี 2000 ขึ้นไป
id | name | category | developer | year |
---|---|---|---|---|
2 | OS X | OS | Apple Inc. | 2001 |
4 | Libre Office | Office Suite | The Document Foundation | 2011 |
หากจะให้ค้นหาข้อมูลจาก 2 คอลัมภ์ จะต้องใช้ AND
(และ) หรือ OR
(หรือ) เพิ่มต่อจาก WHERE
SELECT *
FROM application
WHERE year < 2000
AND category = 'OS'
หมายเหตุ: ถ้าสังเกต จะเห็นว่า การเปรียบเทียบ เท่ากับ ใน SQL จะ ใช้เครื่องหมายเท่ากับเพียงอันเดียว แทนที่จะเป็นสองอันแบบหลาย ๆ ภาษา
ผลที่ได้คือ แสดงข้อมูลจะเฉพาะที่ปีต่ำกว่า 2000 และอยู่ในหมวด OS เท่านั้น
id | name | category | developer | year |
---|---|---|---|---|
1 | Windows | OS | Microsoft | 1985 |
หากพบว่า ข้อมูลที่อยู่ในฐานข้อมูลเรียงไม่ถูกใจ สามารถสั่งเรียงข้อมูลใหม่ได้โดยผ่าน ORDER BY
SELECT name,category,developer,year
FROM application
ORDER BY year ASC
ผลที่ได้คือ ข้อมูลที่ได้จะเรียงตามปีจากน้อยไปหามาก (ASC
) แต่ถ้าจะให้เรียงจากมากไปหาน้อยจะใช้ DESC
name | category | developer | year |
---|---|---|---|
Windows | OS | Microsoft | 1985 |
Microsoft Office | Office Suite | Microsoft | 1990 |
Adobe Photoshop | Graphic Editor | Adobe | 1990 |
GIMP | Graphic Editor | The GIMP Development Team | 1996 |
OS X | OS | Apple Inc. | 2001 |
Libre Office | Office Suite | The Document Foundation | 2011 |
สำหรับข้อมูลในฐานข้อมูลนั้นจะยังคงเรียงอยู่เหมือนเดิม คำสั่งนี้ใช้เฉพาะการดึงข้อมูลมาแสดงเท่านั้น ถ้าลองสั่ง SELECT * FROM application
ดู ผลจะได้เหมือนกับตาราางแรกสุด
ถ้าสังเกตดูภาษา SQL จะอ่านเข้าใจง่าย และคล้ายภาษาอังกฤษมาก