On this page
ฐานข้อมูล & SQL
เก็บข้อมูลถาวรเป็นตาราง และสั่งงานด้วย SQL — SELECT, INSERT, UPDATE, DELETE และพื้นฐานที่ต้องรู้
ตัวแปรในโปรแกรมหายไปเมื่อปิดเครื่อง ถ้าต้องการเก็บข้อมูลถาวร (รายชื่อผู้ใช้ คำสั่งซื้อ โพสต์) ต้องใช้ฐานข้อมูล (database) ชนิดที่พบบ่อยที่สุดคือ relational database ที่เก็บข้อมูลเป็นตาราง (เหมือน Excel) และสั่งงานด้วยภาษา SQL
ข้อมูลเก็บเป็นตาราง
ตารางมีคอลัมน์ (เขตข้อมูล) และแถว (แต่ละรายการ) มักมีคอลัมน์ id เป็นตัวระบุเฉพาะของแต่ละแถว (primary key)
| id | name | age | city |
|---|---|---|---|
| 1 | Aphisit | 25 | Bangkok |
| 2 | Mali | 22 | Chiang Mai |
| 3 | Mochi | 30 | Bangkok |
CRUD — งานกับข้อมูล 4 อย่าง
การทำงานกับข้อมูลมี 4 อย่างหลักเรียกว่า CRUD: Create, Read, Update, Delete ตรงกับคำสั่ง SQL และ HTTP method ที่เรียนไปแล้ว
| CRUD | คำสั่ง SQL | HTTP method |
|---|---|---|
| Create (สร้าง) | INSERT | POST |
| Read (อ่าน) | SELECT | GET |
| Update (แก้) | UPDATE | PUT/PATCH |
| Delete (ลบ) | DELETE | DELETE |
SELECT — ดึงข้อมูล (ใช้บ่อยที่สุด)
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
-- 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;UPDATE หรือ DELETE ที่ไม่มี WHERE จะกระทำกับ "ทุกแถว" ในตาราง เช่น DELETE FROM users; ลบข้อมูลทั้งหมด เป็นความผิดพลาดร้ายแรงที่เกิดขึ้นจริงในงาน ตรวจ WHERE ทุกครั้งก่อนรัน
SQL vs NoSQL
ฐานข้อมูลมี 2 ตระกูลใหญ่ มือใหม่แนะนำเริ่มจาก SQL ก่อนเพราะเป็นพื้นฐานที่เกือบทุกที่ต้องใช้
| SQL (Relational) | NoSQL | |
|---|---|---|
| ตัวอย่าง | PostgreSQL, MySQL, SQLite | MongoDB, 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