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 จะอ่านเข้าใจง่าย และคล้ายภาษาอังกฤษมาก