Notes & software courses · Free to learn
Aph's Blog
On this page

ฐานข้อมูล & SQL

👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ

เก็บข้อมูลถาวรเป็นตาราง และสั่งงานด้วย SQL — SELECT, INSERT, UPDATE, DELETE และพื้นฐานที่ต้องรู้

ตัวแปรในโปรแกรมหายไปเมื่อปิดเครื่อง ถ้าต้องการเก็บข้อมูลถาวร (รายชื่อผู้ใช้ คำสั่งซื้อ โพสต์) ต้องใช้ฐานข้อมูล (database) ชนิดที่พบบ่อยที่สุดคือ relational database ที่เก็บข้อมูลเป็นตาราง (เหมือน Excel) และสั่งงานด้วยภาษา SQL

ข้อมูลเก็บเป็นตาราง

ตารางมีคอลัมน์ (เขตข้อมูล) และแถว (แต่ละรายการ) มักมีคอลัมน์ id เป็นตัวระบุเฉพาะของแต่ละแถว (primary key)

idnameagecity
1Aphisit25Bangkok
2Mali22Chiang Mai
3Mochi30Bangkok

CRUD — งานกับข้อมูล 4 อย่าง

การทำงานกับข้อมูลมี 4 อย่างหลักเรียกว่า CRUD: Create, Read, Update, Delete ตรงกับคำสั่ง SQL และ HTTP method ที่เรียนไปแล้ว

CRUDคำสั่ง SQLHTTP method
Create (สร้าง)INSERTPOST
Read (อ่าน)SELECTGET
Update (แก้)UPDATEPUT/PATCH
Delete (ลบ)DELETEDELETE

SELECT — ดึงข้อมูล (ใช้บ่อยที่สุด)

sql
SELECT * FROM users;                    -- ทุกคอลัมน์ ทุกแถว
SELECT name, age FROM users;            -- เฉพาะบางคอลัมน์
SELECT * FROM users WHERE age > 24;     -- มีเงื่อนไข
SELECT * FROM users WHERE city = 'Bangkok';
SELECT * FROM users ORDER BY age DESC;  -- เรียงมากไปน้อย
SELECT * FROM users LIMIT 10;           -- เอาแค่ 10 แถว
SELECT COUNT(*) FROM users;             -- นับจำนวนแถว
SELECT city, COUNT(*) FROM users GROUP BY city;  -- นับตามเมือง

INSERT, UPDATE, DELETE

sql
-- CREATE: เพิ่มแถวใหม่
INSERT INTO users (name, age, city)
VALUES ('Nim', 28, 'Phuket');

-- UPDATE: แก้ไข (อย่าลืม WHERE ไม่งั้นแก้ทุกแถว!)
UPDATE users SET age = 26 WHERE name = 'Aphisit';

-- DELETE: ลบ (อย่าลืม WHERE!)
DELETE FROM users WHERE id = 3;
อย่าลืม WHERE!

UPDATE หรือ DELETE ที่ไม่มี WHERE จะกระทำกับ "ทุกแถว" ในตาราง เช่น DELETE FROM users; ลบข้อมูลทั้งหมด เป็นความผิดพลาดร้ายแรงที่เกิดขึ้นจริงในงาน ตรวจ WHERE ทุกครั้งก่อนรัน

SQL vs NoSQL

ฐานข้อมูลมี 2 ตระกูลใหญ่ มือใหม่แนะนำเริ่มจาก SQL ก่อนเพราะเป็นพื้นฐานที่เกือบทุกที่ต้องใช้

SQL (Relational)NoSQL
ตัวอย่างPostgreSQL, MySQL, SQLiteMongoDB, Redis
เก็บเป็นตารางมีโครงสร้างชัดเอกสารคล้าย JSON / คู่ key-value
เหมาะกับข้อมูลมีความสัมพันธ์ชัดเจนข้อมูลยืดหยุ่น/โครงสร้างไม่ตายตัว

สรุปหัวข้อนี้

  • ฐานข้อมูลเก็บข้อมูลถาวร — relational database เก็บเป็นตาราง (คอลัมน์ + แถว + id)
  • CRUD = Create/Read/Update/Delete ตรงกับ INSERT/SELECT/UPDATE/DELETE
  • SELECT ดึงข้อมูล: WHERE (กรอง), ORDER BY (เรียง), LIMIT, COUNT, GROUP BY
  • UPDATE/DELETE ต้องมี WHERE เสมอ ไม่งั้นกระทบทุกแถว
  • SQL เหมาะกับข้อมูลมีโครงสร้าง, NoSQL ยืดหยุ่นกว่า — มือใหม่เริ่มที่ SQL
แบบฝึกหัด

1) เขียน SQL ดึงผู้ใช้ที่อายุมากกว่า 20 เรียงจากมากไปน้อย 2) เขียน SQL นับจำนวนผู้ใช้ในแต่ละเมือง 3) เขียน INSERT เพิ่มผู้ใช้ใหม่ 4) เขียน UPDATE แก้เมืองของผู้ใช้ id 2 5) ฝึก SQL ฟรีที่ sqlbolt.com หรือ sql-practice.com