เริ่มเรียน 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 ฝึกเขียน SQL ใน 10 นาที – ตอนที่ 2 | DataRockieCancel reply

Discover more from DataRockie

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

Continue reading