SQL พัฒนาที่ IBM โดย Donald D. Chamberlin และ Raymond F. Boyce ในปี ค.ศ. 1970 โดยมีแนวคิดบางส่วนมาจาก Edgar F. Codd เพื่อใช้กับระบบฐานข้อมูล System R
เดิม SQL จะใช้ชื่อว่า SEQUEL (Structured English Query Language) แต่ดันมีปัญหาเรื่องเครื่องหมายการค้า เลยเปลี่ยนชื่อเป็น SQL ซึ่งอ่านได้ทั้ง เอส-คิว-แอล, ซี-เควล และ ซี-ควล ตามชอบใจ
ระบบฐานข้อมูลส่วนใหญ่ ไม่ว่าจะเป็น MySQL, PostgreSQL, SQL Server, Access, Oracle, DB2 หรือ SQLite ก็ใช้ SQL ในการจัดการข้อมูลทั้งสิ้น
แต่... แม้ว่าระบบฐานข้อมูลเหล่านี้จะใช้ SQL ในการจัดการเหมือนกัน แต่รายละเอียดบางคำสั่งย่อย ๆ บางคำสั่งอาจจะแตกต่างกัน หากผลที่ได้ไม่ได้ออกมาตามต้องการ ให้คิดถึงจุดนี้ด้วย
สำหรับข้อมูลที่ใช้จะใช้ข้อมูลตามนี้ ขอตั้งชื่อตารางว่า 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 จะใช้ตัวพิมพ์เล็ก หรือตัวพิมพ์ใหญ่ก็ให้ผลเหมือนกัน เพียงแต่ใช้ตัวพิมพ์ใหญ่จะอ่านได้เข้าใจง่ายกว่า)
ผลที่ได้จะเหมือนกับตารางด้านบน คือ เอาข้อมูลทุกอย่างมาแสดง
อันนี้เลือกเอาจะเฉพาะคอลัมภ์ name กับ year มาแสดง
| name | year |
|---|---|
| Windows | 1985 |
| OS X | 2001 |
| Microsoft Office | 1990 |
| Libre Office | 2011 |
| Adobe Photoshop | 1990 |
| GIMP | 1996 |
| category |
|---|
| OS |
| Office Suite |
| Graphic Editor |
WHERE เข้าช่วย โดยใช้การเปรียบเทียบทั่ว ๆ ไป รวมทั้ง BETWEEN (ระหว่างค่า 2 ค่า) LIKE (ค้นหาโดยใช้ pattern) และ IN (ข้อมูลในคอลัมภ์เป็นค่าใดค่าหนึ่งในนี้)หมายเหตุ: สำหรับการเปรียบเทียบ ไม่เท่ากับ ระบบฐานข้อมูลบางตัวใช้
<> แต่บางตัวใช้ !=
ผลที่ได้คือ จะแสดงเฉพาะแอพที่เปิดตัวตั้งแต่ปี 2000 ขึ้นไป
| id | name | category | developer | year |
|---|---|---|---|---|
| 2 | OS X | OS | Apple Inc. | 2001 |
| 4 | Libre Office | Office Suite | The Document Foundation | 2011 |
AND (และ) หรือ OR (หรือ) เพิ่มต่อจาก WHERE
หมายเหตุ: ถ้าสังเกต จะเห็นว่า การเปรียบเทียบ เท่ากับ ใน SQL จะใช้เครื่องหมายเท่ากับเพียงอันเดียว แทนที่จะเป็นสองอันแบบหลาย ๆ ภาษา
ผลที่ได้คือ แสดงข้อมูลจะเฉพาะที่ปีต่ำกว่า 2000 และอยู่ในหมวด OS เท่านั้น
| id | name | category | developer | year |
|---|---|---|---|---|
| 1 | Windows | OS | Microsoft | 1985 |
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 จะอ่านเข้าใจง่าย และคล้ายภาษาอังกฤษมาก
ตอนแรกจะเขียนถึงการ login logout ใน PHP แบบ hard code จะได้ไม่ต้องดึงจากฐานข้อมูล แต่คิดไปคิดมาดึงจากฐานข้อมูลน่าจะเข้าใจตอนนำไปใช้งานได้มากกว่า (และไม่ต้องเขียนถึงซ้ำ) แต่ถ้าไม่เคยพูดถึง SQL ก่อนก็คงไม่เหมาะ (รึเปล่า?)
ReplyDeleteป.ล. เห็นความพยายามการย่อเป็น SEQUEL แล้วฝรั่งนี่เขาช่างคิดตัวย่อกันจริง ๆ
อย่า hard code เลยครับ เขียนทั้งทีเอาตาม best practice เลยดีกว่า ^^
Delete