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