SQL (
Structured
Query
Language - ภาษาสอบถามเชิงโครงสร้าง) เป็นภาษาสำหรับจัดการฐานข้อมูลที่นิยมใช้กันมากในปัจจุบัน
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 |
หากจะให้ค้นหาข้อมูลจาก 2 คอลัมภ์ จะต้องใช้
AND
(และ) หรือ
OR
(หรือ) เพิ่มต่อจาก
WHERE
หมายเหตุ: ถ้าสังเกต จะเห็นว่า การเปรียบเทียบ
เท่ากับ ใน SQL จะ
ใช้เครื่องหมายเท่ากับเพียงอันเดียว แทนที่จะเป็นสองอันแบบหลาย ๆ ภาษา
ผลที่ได้คือ แสดงข้อมูลจะเฉพาะที่ปีต่ำกว่า 2000 และอยู่ในหมวด OS เท่านั้น
id | name | category | developer | year |
1 | Windows | OS | Microsoft | 1985 |
หากพบว่า ข้อมูลที่อยู่ในฐานข้อมูลเรียงไม่ถูกใจ สามารถสั่งเรียงข้อมูลใหม่ได้โดยผ่าน ORDER BY
ผลที่ได้คือ ข้อมูลที่ได้จะเรียงตามปีจากน้อยไปหามาก (
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 จะอ่านเข้าใจง่าย และคล้ายภาษาอังกฤษมาก