เริ่มเรียน Data Science ง่ายๆด้วยตัวเอง 🍟

ฝึกเขียน SQL สำหรับมือใหม่ภายใน 10 นาที

Categories:
learn sql for beginners in 10 minutes

บทความนี้แอดมาสอนเขียน 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 ขั้นตอนด้านล่าง

  1. ติดตั้งโปรแกรมฟรี DB Browser และดาวน์โหลด sample database (chinook.db) สำหรับ tutorial นี้
  2. เปิดโปรแกรม DB Browser ขึ้นมา ไปที่ File > Open Database > Browse หาไฟล์ chinook.db > Open
  3. เสร็จแล้วไปที่หน้า 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 ด้วยตัวพิมพ์ใหญ่ เช่น SELECT FROM WHERE
  • ถ้าเราเขียนมากกว่าหนึ่ง 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;
view raw .sql hosted with ❤ by GitHub

ถ้าต้องการดึงทุกคอลัมน์ออกมาจากตาราง customers

แค่เขียน SELECT * FROM customers;

โดย * คือ wildcard สำหรับแทน “ทุกคอลัมน์” ในตารางนั้นๆ

หรือเขียนชื่อคอลัมน์ที่เราต้องการได้เลย เช่น SELECT firstname, lastname, email, phone FROM customers; แยกชื่อแต่ละคอลัมน์ด้วยเครื่องหมาย comma

ปกติเราจะชื่อคอลัมน์ ชื่อตารางด้วยตัวพิมพ์เล็ก ส่วน SQL clauses ด้วยตัวพิมพ์ใหญ่

📝 มาลองทำแบบฝึกหัดสามข้อด้านล่างใน DB Browser

  1. เลือกทุกคอลัมน์จาก table tracks
  2. เลือกคอลัมน์ invoiceid, customerid, invoicedate, total จาก table invoices
  3. เลือกคอลัมน์ 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';
view raw .sql hosted with ❤ by GitHub

เราสามารถเขียนได้มากกว่าหนึ่งเงื่อนไข ด้วยการใช้ 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';
view raw .sql hosted with ❤ by GitHub

ก่อนจะไปที่ session สุดท้ายของ tutorial นี้ อยากให้ทุกคนแวะมาอ่านวิธีการเขียน WHERE เพิ่มเติมได้ W3schools

📝 เสร็จแล้วลองทำแบบฝึกหัดสามข้อนี้ใน DB Browser

  1. เพลง trackid = 100 ใน table tracks ชื่อว่าอะไร?
  2. เลือกเฉพาะลูกค้าใน table customers ที่ใช้อีเมล์ gmail.com (hint – ลองใช้ LIKE operator)
  3. เลือกเฉพาะลูกค้าใน 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;
view raw .sql hosted with ❤ by GitHub

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';
view raw .sql hosted with ❤ by GitHub

ลองสังเกตเวลาเราเขียนตรง SELECT กับ ON clause จะใช้ syntax table_name.column_name เช่น

  • artists.name
  • albums.title
  • customers.firstname

เพื่อระบุว่าคอลัมน์นั้นถูกดึงมาจากตารางไหน

📝 แบบฝึกหัดเรื่อง JOIN อ่านเพิ่มเติมเรื่องนี้ได้บน W3schools

  1. เลือกคอลัมน์ genreid, name จาก table genres และคอลัมน์ name จาก table tracks (hint – เขียน SELECT … FROM genres JOIN tracks ON …)
  2. เลือกคอลัมน์ invoiceid, customerid, invoicedate, total จาก table invoices และคอลัมน์ firstname, lastname จาก table customers
  3. ต่อเนื่องมาจากแบบฝึกหัดข้อสอง ลูกค้า 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 ... – เลือกคอลัมน์ที่เราต้องการจาก table
  • WHERE ... – เขียนเงื่อนไขเพื่อเลือก record ที่เราต้องการ
  • JOIN ... ON ... – เขียนเชื่อมหลายๆตารางเข้าด้วยกัน

เพื่อนๆที่ทำแบบฝึกหัดเสร็จแล้ว ลองแชร์ code ที่เขียนได้ใน comment ด้านล่างนะครับ

ยังมีอะไรให้เรียนอีกเยอะเลย ถ้าอยากลุยต่อ สมัครเรียนฟรีคอร์ส SQL Crash Course บนโรงเรียนเรานะคร้าบ 🚀

18 responses to “ฝึกเขียน SQL สำหรับมือใหม่ภายใน 10 นาที”

  1. […] SQL ตอนที่ 1 – Understand Basic SQL in 10 Minutes […]

    1.  Avatar
      Anonymous

      SQL คือภาษาที่เราใช้ทำงานกับ database เพื่อดึงข้อมูลออกมาทำรายงานหรือวิเคราะห์

    2.  Avatar
      Anonymous

      1. SELECT * FROM students LIMIT 5;

  2. […] อ่านบทความเก่าของเรา – หัดเขียน SQL เป็นใน 10 นาที […]

    1.  Avatar
      Anonymous

      SELECT DISTINCT age FROM students;

  3. […] SQL ตอนที่ 1 – Understand Basic SQL in 10 Minutes […]

    1.  Avatar
      Anonymous

      SELECT DISTINCT age FROM students;

  4. […] SQL ลองอ่านบทความสอนพื้นฐานของเราได้ที่นี่ ดาวน์โหลดไฟล์ตัวอย่าง […]

  5. […] ภาษาที่ Data Engineer ชำนาญมากที่สุดคือ SQL […]

  6.  Avatar
    Anonymous

    ข้อ 2กับ 3เขียน codeยังไงค่ะ ขอคำแนะนำด้วยคะ

    1. AuNToGo Avatar

      ถ้าเป็นข้อนี้นะครับ
      3.ต่อเนื่องมาจากแบบฝึกหัดข้อสอง ลูกค้า invoiceid = 10 มีชื่อจริงว่าอะไร (hint – ใช้ WHERE หลังจาก JOIN ทั้งสองตาราง เลือก invoiceid ที่เราต้องการ)

      code:
      SELECT invoices.InvoiceId, invoices.CustomerId, invoices.InvoiceDate, invoices.Total, customers.FirstName, customers.LastName
      FROM invoices
      JOIN customers
      ON invoices.InvoiceId = customers.CustomerId
      WHERE invoiceid = ’10’;

      ประมาณนี้ครับ ตั้งใจเรียนมาก 10 นาที เขียนจริงครึ่ง ชม. กว่าจะได้

  7.  Avatar
    Anonymous

    SELECT * FROM customers
    WHERE CustomerId BETWEEN 11 AND 15;

  8.  Avatar
    Anonymous

    ตอนที่ 1 ภาษา SQL
    จงอธิบายความหมายและการทำงานในหัวข้อดังนี้
    1.1 Insert into Student (name, age) Values (‘Klissayakorn’, 19), (‘Supranee’, 18), (‘Ponpun’, 8);

    1. Kasidis Satangmongkol Avatar

      สุดยอดคร้าบ

  9.  Avatar
    Anonymous

    มีเฉลยแบบฝึกหัดแต่ละข้อมั้ยคะ อยากรู้ว่าตัวเองทำถูกมั้ยค่ะ 🙂

  10.  Avatar
    Anonymous

    SELECT * FROM customers;

    SELECT
    InvoiceId,
    CustomerId,
    InvoiceDate,
    total
    FROM invoices;

    SELECT
    FirstName,
    LastName,
    BirthDate,
    Email
    FROM employees;

    SELECT * FROM customers
    WHERE Country = ‘USA’;

    SELECT *
    FROM customers
    WHERE Country = ‘USA’ or Country = ‘Brazil’;

    SELECT *
    FROM tracks
    WHERE TrackId = 100;

    SELECT *
    FROM customers
    WHERE Email LIKE ‘%@gmail.%’;

    SELECT *
    FROM customers
    WHERE City IN (‘Oslo’, ‘New York’);

    SELECT *
    FROM artists
    JOIN albums
    ON artists.ArtistId = albums.AlbumId;

    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
    genres.GenreId,
    genres.Name,
    tracks.name
    FROM genres
    JOIN tracks
    ON genres.GenreId = tracks.GenreId;

    SELECT
    invoices.InvoiceId,
    invoices.CustomerId,
    invoices.InvoiceDate,
    invoices.Total,
    customers.FirstName,
    customers.LastName
    FROM invoices
    JOIN customers
    ON invoices.CustomerId = customers.CustomerId
    WHERE InvoiceId = 10;

Leave a Reply to AnonymousCancel reply

Discover more from DataRockie

Subscribe now to keep reading and get access to the full archive.

Continue reading