บทความนี้แอดมาสอนเขียน SQL สำหรับผู้เริ่มต้น ใช้เวลาแค่ 10 นาที สำหรับเพื่อนๆที่ยังไม่เคยเรียนด้านนี้มาก่อนเลย และสนใจอยากทำงานเป็นนักวิเคราะห์ข้อมูล
🍌 Note – อันนี้บทความเก่ามาปัดฝุ่นใหม่ สมัยก่อนเขียนไม่ค่อยเก่งเท่าไหร่ 555+ ช่วงนี้แอดกำลัง revise เนื้อหางานเก่าๆอยู่คร้าบ
SQL ย่อมาจากคำว่า “Structured Query (English) Language” เป็นภาษาทางการที่เราใช้ทำงานกับฐานข้อมูล พัฒนาโดย IBM ในยุค 1970s
Structured Query Language is a programming language used to store, retrieve, and manipulate data in relational databases
อธิบายสั้นๆ SQL คือภาษาที่ data analyst ใช้ทำงานกับ database หลักๆเพื่อดึงข้อมูลออกมาทำ data analysis ถ้าเขียน SQL เก่งๆ ก็ไปอยู่ได้เกือบทุกบริษัทเลย
เพราะทุกบริษัทมี database ยั๊งงง 555+ เรื่องจริงนะ 🤣
Set Up

ก่อนจะเริ่มทำตาม tutorial วันนี้ เพื่อนๆต้อง set up โปรแกรม ทำตาม 3 ขั้นตอนด้านล่าง
- ติดตั้งโปรแกรมฟรี DB Browser และดาวน์โหลด sample database (chinook.db) สำหรับ tutorial นี้
- เปิดโปรแกรม DB Browser ขึ้นมา ไปที่ File > Open Database > Browse หาไฟล์ chinook.db > Open
- เสร็จแล้วไปที่หน้า Execute SQL เพื่อเริ่มเขียน query
หรือจะเขียน query บน SQLite Online Editor ก็ได้เช่นกันนะครับ อัปโหลดไฟล์ .db ขึ้นไป แล้วก็เริ่มเขียน SQL ได้เลย
✅ SQL มีหลายเวอร์ชัน เช่น PostgreSQL, MySQL, MS SQL Server บทความนี้แอดสอน standard syntax ด้วย SQLite นะครับ ติดตั้งง่าย ไม่ต้องมี server ก็ได้
Basic Rules
หลักการเขียน SQL query พื้นฐาน ง่ายจนงง 555+
- SQL syntax เป็นแบบ case-insensitive แปลว่าตัวพิมพ์เล็กใหญ่ ไม่มีผล (ยกเว้นเวลาเขียน text ในเครื่องหมายคำพูด เช่น ‘USA’ หรือ ‘McDonald’)
- เขียน SQL clauses หรือ keywords ด้วยตัวพิมพ์ใหญ่ เช่น
SELECTFROMWHERE - ถ้าเราเขียนมากกว่าหนึ่ง queries ในหน้าต่าง editor อย่าลืมใส่
;(ทำหน้าที่เหมือน . ในประโยคภาษาอังกฤษ) - Shortcut ของ DB Browser กดปุ่ม
F5เพื่อรัน query ดึงข้อมูลง่ายๆ
ถัดไป มาลองดูวิธีการเขียน Queries ง่ายๆเพื่อดึงข้อมูลจาก database ที่เราต้องการ
SELECT
2 นาทีแรก – เขียน query เพื่อดึง column(s) ที่เราต้องการจาก table ด้วย SELECT
| — select all columns from table customers | |
| SELECT * FROM customers; | |
| — select column firstname, lastname, email, phone from customers | |
| SELECT | |
| firstname, | |
| lastname, | |
| email, | |
| phone | |
| FROM customers; |
ถ้าต้องการดึงทุกคอลัมน์ออกมาจากตาราง customers
แค่เขียน SELECT * FROM customers;
โดย * คือ wildcard สำหรับแทน “ทุกคอลัมน์” ในตารางนั้นๆ
หรือเขียนชื่อคอลัมน์ที่เราต้องการได้เลย เช่น SELECT firstname, lastname, email, phone FROM customers; แยกชื่อแต่ละคอลัมน์ด้วยเครื่องหมาย comma
ปกติเราจะชื่อคอลัมน์ ชื่อตารางด้วยตัวพิมพ์เล็ก ส่วน SQL clauses ด้วยตัวพิมพ์ใหญ่
📝 มาลองทำแบบฝึกหัดสามข้อด้านล่างใน DB Browser
- เลือกทุกคอลัมน์จาก table tracks
- เลือกคอลัมน์ invoiceid, customerid, invoicedate, total จาก table invoices
- เลือกคอลัมน์ firstname, lastname, birthdate, email จาก table employees
WHERE
4 นาทีต่อมา – เขียน query เพื่อฟิลเตอร์ row(s) ที่เราต้องการจาก table ด้วย WHERE
การเขียน WHERE คือการเขียนเงื่อนไขเพื่อดึงเฉพาะข้อมูลที่เราจำเป็นต้องใช้ เช่น ดึงเฉพาะลูกค้าที่อยู่ในประเทศอเมริกา country = ‘USA’
| — where clause used to filter rows | |
| — filter only customers from USA | |
| SELECT * | |
| FROM customers | |
| WHERE country = 'USA'; |
เราสามารถเขียนได้มากกว่าหนึ่งเงื่อนไข ด้วยการใช้ AND และ OR operator แบบนี้
| — filter customers from USA who also live in CA state | |
| SELECT * | |
| FROM customers | |
| WHERE country = 'USA' AND state = 'CA'; | |
| — filter customers from USA or Brazil | |
| SELECT * | |
| FROM customers | |
| WHERE country = 'USA' OR country = 'Brazil'; |
ก่อนจะไปที่ session สุดท้ายของ tutorial นี้ อยากให้ทุกคนแวะมาอ่านวิธีการเขียน WHERE เพิ่มเติมได้ W3schools
📝 เสร็จแล้วลองทำแบบฝึกหัดสามข้อนี้ใน DB Browser
- เพลง trackid = 100 ใน table tracks ชื่อว่าอะไร?
- เลือกเฉพาะลูกค้าใน table customers ที่ใช้อีเมล์ gmail.com (hint – ลองใช้ LIKE operator)
- เลือกเฉพาะลูกค้าใน table customers ที่อยู่ในเมือง Oslo หรือ New York (hint – ใช้ IN operator)
ผ่านไปแค่ 6 นาที ตอนนี้เพื่อนๆสามารถเขียน SQL query ง่ายๆในการดึงข้อมูลที่ต้องการจาก table ด้วย SELECT และ WHERE clauses สองตัวนี้ใช้ทุก query เฉียบ
JOIN
4 นาทีสุดท้าย – เขียน query เพื่อเชื่อมหลายๆ table(s) เข้าด้วยกัน
พลังอันยิ่งใหญ่ของ SQL คือการเขียน query ดึงข้อมูลจากหลายตารางพร้อมกันด้วย JOIN clause ก่อนเรียนต่อ มาลองดู ER diagram ของ chinook.db
Query ด้านล่างเรา JOIN ตาราง artists และ albums เข้าด้วยกัน โดยเงื่อนไขที่ใช้เชื่อมสองตารางอยู่ตรง ON artists.artistid = albums.artistid
เงื่อนไขในการ JOIN ทั้งสองตารางต้องมีอย่างน้อยหนึ่ง column ที่สามารถ match ค่ากันได้พอดี concept เหมือนกับการเขียน VLOOKUP ใน Excel เลย
| — JOIN two tables: album and artist | |
| SELECT * | |
| FROM artists | |
| JOIN albums | |
| ON artists.artistid = albums.artistid; |
Note – ตัวอย่างวันนี้คือ INNER JOIN เป็น default join ในภาษา SQL ใช้ดึงข้อมูลที่สามารถ match ค่ากันได้จากสองตารางนั้นๆ i.e. overlap
เราสามารถเขียน JOIN มากกว่าสอง tables และใช้ WHERE เพื่อฟิลเตอร์เฉพาะ records ที่เราต้องการ เช่น ดึงมาเฉพาะเพลงของ Aerosmith
| — JOIN more than two tables | |
| SELECT | |
| artists.name, | |
| albums.title, | |
| tracks.name | |
| FROM artists | |
| JOIN albums | |
| ON artists.artistid = albums.artistid | |
| JOIN tracks | |
| ON tracks.albumid = albums.albumid | |
| WHERE artists.name = 'Aerosmith'; |
ลองสังเกตเวลาเราเขียนตรง SELECT กับ ON clause จะใช้ syntax table_name.column_name เช่น
- artists.name
- albums.title
- customers.firstname
เพื่อระบุว่าคอลัมน์นั้นถูกดึงมาจากตารางไหน

📝 แบบฝึกหัดเรื่อง JOIN อ่านเพิ่มเติมเรื่องนี้ได้บน W3schools
- เลือกคอลัมน์ genreid, name จาก table genres และคอลัมน์ name จาก table tracks (hint – เขียน SELECT … FROM genres JOIN tracks ON …)
- เลือกคอลัมน์ invoiceid, customerid, invoicedate, total จาก table invoices และคอลัมน์ firstname, lastname จาก table customers
- ต่อเนื่องมาจากแบบฝึกหัดข้อสอง ลูกค้า invoiceid = 10 มีชื่อจริงว่าอะไร (hint – ใช้ WHERE หลังจาก JOIN ทั้งสองตาราง เลือก invoiceid ที่เราต้องการ)
Next Step
SQL Clauses อื่นๆที่ data analyst ควรศึกษา ใช้ให้คล่อง เช่น
- Aggregate Functions สำหรับวิเคราะห์ข้อมูลเบื้องต้น
- GROUP BY
- HAVING
- ORDER BY
- LIMIT
- ฝึกเขียน JOIN รูปแบบต่างๆ INNER, LEFT, RIGHT, FULL, SELF JOIN
- ฝึกเขียน Subqueries (WITH) ให้โค้ดเราเป็นระเบียบ
Summary
Tutorial นี้เราเรียนการเขียน SQL query เบื้องต้น ใช้เวลาสั้นๆ มาสรุปกันสักนิด
SELECT ... FROM ...– เลือกคอลัมน์ที่เราต้องการจาก tableWHERE ...– เขียนเงื่อนไขเพื่อเลือก record ที่เราต้องการJOIN ... ON ...– เขียนเชื่อมหลายๆตารางเข้าด้วยกัน
เพื่อนๆที่ทำแบบฝึกหัดเสร็จแล้ว ลองแชร์ code ที่เขียนได้ใน comment ด้านล่างนะครับ
ยังมีอะไรให้เรียนอีกเยอะเลย ถ้าอยากลุยต่อ สมัครเรียนฟรีคอร์ส SQL Crash Course บนโรงเรียนเรานะคร้าบ 🚀

Leave a Reply to ฝึกเขียน SQL ใน 10 นาที – ตอนที่ 2 | DataRockieCancel reply