บทความวันนี้ เรามาสอนเขียน basic SQL ใช้เวลาแค่ 10 นาที สำหรับเพื่อนๆที่ยังไม่เคยเรียนด้านนี้มาก่อนเลย และมีความสนใจอยากทำงานด้าน data analysis/ data science
[su_spoiler title=”SQL ย่อมาจากคำว่าอะไร”]SQL ย่อมาจากคำว่า Structured Query (English) Language เป็นภาษาทางการไว้ทำงานกับฐานข้อมูล ใช้กันมาตั้งแต่ปี 1970s[/su_spoiler]
อธิบายสั้นๆ SQL คือภาษาที่เราใช้ทำงานกับ database หลักๆเพื่อดึงข้อมูลออกมาทำ data analysis ถ้าเขียน SQL เก่งๆ ก็ไปอยู่ได้เกือบทุกบริษัทเลย ทำไม? เพราะทุกบริษัทมี database !!
Set Up

ก่อนจะเริ่มทำตาม tutorial วันนี้ เพื่อนๆต้อง set up โปรแกรม ทำตาม 3 ขั้นตอนด้านล่าง
- ติดตั้งโปรแกรมฟรี DB Browser และดาวน์โหลด Chinook database สำหรับ tutorial นี้
- เปิดโปรแกรม DB Browser ขึ้นมา ไปที่ File > Open Database > Browse หาไฟล์ chinook.db > Open
- เสร็จแล้วไปที่แท๊บ Execute SQL เพื่อเริ่มเขียน query
Basic Rules
กฏเบื้องต้นสำหรับการเขียน SQL query
- SQL syntax เป็นแบบ case-insensitive แปลว่าตัวพิมพ์เล็กใหญ่ ไม่มีผล (ยกเว้นเวลาเขียน text ในเครื่องหมายคำพูด เช่น ‘USA’ หรือ ‘McDonald’)
- ตามธรรมเนียมเราจะเขียน SQL clause หรือ keywords ด้วยตัวพิมพ์ใหญ่ เช่น
SELECT
FROM
WHERE
ฯลฯ - SQL syntax ที่เราจะเขียนด้วยกันวันนี้เรียกว่า query โดยแต่ละ query จะปิดท้ายด้วยเครื่องหมาย ;
- ใน DB Browser พอเขียน SQL query เสร็จแล้ว กดปุ่ม F5 ในคีย์บอร์ดเพื่อดูผล query ง่ายๆ
tutorial นี้เราจะสอนเขียน SQL query ง่ายๆเพื่อดึงข้อมูลจาก database อย่างที่เราต้องการ
SELECT
2 นาทีแรก – เขียน query เพื่อดึง column(s) ที่เราต้องการจาก table ด้วย SELECT
clause
— select all columns from table customers | |
SELECT * FROM customers; | |
— select column firstname, lastname, email, phone from customers | |
SELECT | |
firstname, | |
lastname, | |
email, | |
phone | |
FROM customers; |
ถ้าต้องการดึงทุกคอลัมน์ออกมาจาก table customers แค่เขียนว่า SELECT
* FROM
customers;
หรือเราสามารถเขียนชื่อคอลัมน์ที่เราต้องการได้เลย เช่น SELECT
firstname, lastname, email, phone FROM
customers; แต่ละคอลัมน์จะถูกแยกด้วยเครื่องหมาย comma
ลองทำแบบฝึกหัด 3 ข้อด้านล่างใน DB Browser
- เลือกทุกคอลัมน์จาก table tracks
- เลือกคอลัมน์ invoiceid, customerid, invoicedate, total จาก table invoices
- เลือกคอลัมน์ firstname, lastname, birthdate, email จาก table employees
WHERE
4 นาทีต่อมา – เขียน query เพื่อฟิลเตอร์ row(s) ที่เราต้องการจาก table ด้วย WHERE
clause
การเขียน WHERE
คือการเขียน condition เงื่อนไขที่เราต้องการฟิลเตอร์ record ใน database
— 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
เพิ่มเติมได้ที่นี่ และลองทำแบบฝึกหัดสามข้อด้านล่างใน DB Browser
- เพลง trackid = 100 ใน table tracks ชื่อว่าอะไร?
- เลือกเฉพาะลูกค้าใน table customers ที่ใช้อีเมล์ @gmail.com (hint – ใช้ LIKE operator)
- เลือกเฉพาะลูกค้าใน table customers ที่อยู่ในเมือง Oslo หรือ New York (hint – ใช้ IN operator)
ผ่านไปแล้ว 6 นาที ตอนนี้เพื่อนๆสามารถเขียน SQL query ง่ายๆในการดึงข้อมูล column(s) / row(s) ที่เราต้องการจาก database ด้วย select และ where clauses
JOIN
4 นาทีสุดท้าย – เขียน query เพื่อเชื่อมหลายๆ table(s) เข้าด้วยกัน
พลังอันยิ่งใหญ่ของ SQL อยู่ที่การเขียน query เพื่อดึงข้อมูลจากหลายๆ tables พร้อมกัน ด้วย JOIN
clause ลองดู ER diagram ของ chinook.db เพื่อเข้าใจภาพรวมของ database ใน tutorial นี้ให้ดียิ่งขึ้น
query ด้านล่างเรา JOIN
ตาราง artists และ albums เข้าด้วยกัน โดยเงื่อนไขในการเขียนเชื่อมสองตารางอยู่ใน ON
artists.artistid = albums.artistid จะเชื่อมสองตารางได้ ทั้งสองตารางต้องมี 1 column ที่สามารถ match กันได้พอดี (คล้ายๆการเขียน VLOOKUP ใน Excel)
— JOIN two tables: album and artist | |
SELECT * | |
FROM artists | |
JOIN albums | |
ON artists.artistid = albums.artistid; |
เราสามารถเขียน 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 เราจะเขียน table_name.column_name เช่น artists.name, albums.title, customers.firstname ฯลฯ เพื่อระบุชื่อคอลัมน์แบบชัดๆว่ามันอยู่ใน table ไหน

อ่านเพิ่มเติมเรื่องการเขียน JOIN
ได้ที่นี่ และลองทำแบบฝึกหัดสามข้อด้านล่างใน DB Browser
- เลือกคอลัมน์ 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 ทั้งสอง tables เพื่อเลือก invoiceid ที่เราต้องการ)
Summary
tutorial นี้เราเรียนการเขียน SQL query เบื้องต้นภายในเวลาแค่ 10 นาที สรุปกันอีกที
SELECT ... FROM ...
– เลือกคอลัมน์ที่เราต้องการจาก table (2 min)WHERE ...
– เขียนเงื่อนไขเพื่อเลือก record ที่เราต้องการ (4 min)JOIN ... ON ...
– เขียนเชื่อมหลายๆตารางเข้าด้วยกัน (4 min)
ยังมีอะไรให้เรียนอีกเยอะ ถ้าอยากเข้าใจ SQL แบบเต็มๆ? สมัครเรียนกับเราได้ฟรีที่ DataRockie School โรงเรียนออนไลน์ด้าน data science ที่คูลที่สุดในประเทศไทย
Leave a Reply