
กำลังโหลด...

กำลังโหลด...

ยังไม่ต้องแตะ Express เราจะคุยกับ PostgreSQL โดยตรงก่อน ถ้า SQL ทำงานแล้ว ตอนต่อเข้ากับ route เราจะเปลี่ยนเพียงวิธีส่งค่าเข้าและส่ง rows ออก
| สิ่งที่อยากทำ | SQL | คิดเป็นภาษาไทย |
|---|---|---|
| เพิ่มหนังสือ | INSERT |
สร้าง row ใหม่ |
| ดูหนังสือ | SELECT |
อ่าน row |
| แก้ชื่อหนังสือ | UPDATE |
เปลี่ยน row ที่เลือก |
| ลบหนังสือ | DELETE |
ลบ row ที่เลือก |
flowchart LR
A["SQL command"] --> B["PostgreSQL ตรวจ Schema"]
B --> C["อ่าน / เปลี่ยน rows"]
C --> D["rows หรือ RETURNING *"]
INSERT INTO books (title, author, year, user_id)
VALUES ('The Little Prince', 'Antoine de Saint-Exupéry', 1943, 1)
RETURNING *;
books คือ column ที่จะใส่VALUES ต้องเรียงตำแหน่งให้ตรงกับรายชื่อ columnRETURNING * ทำให้เราเห็น row ที่เพิ่งสร้างและรู้ id จริงSELECT id, title, author
FROM books
ORDER BY id;
ผลลัพธ์ควรเป็นตารางที่มี id, title, author อย่าเดา id เอง ให้ดูจากตารางนี้ก่อน Update/Delete
UPDATE books
SET title = 'เจ้าชายน้อย'
WHERE id = 1
RETURNING *;
UPDATE books ← ทำกับ table ไหน
SET title = ... ← เปลี่ยน column อะไร
WHERE id = 1 ← เปลี่ยน row ไหน
RETURNING * ← แสดงหลักฐานว่าเปลี่ยนแล้ว
DELETE FROM books
WHERE id = 1
RETURNING *;
ก่อนกด Run สำหรับ
UPDATEหรือDELETEต้องเห็นWHEREก่อนเห็น;เสมอ
-- ใช้ id ที่เห็นจริงจาก SELECT
UPDATE books SET title = 'ชื่อใหม่' WHERE id = TODO RETURNING *;
DELETE FROM books WHERE id = TODO RETURNING *;
| อาการ | ความหมาย | วิธีคิด |
|---|---|---|
| เปลี่ยน/ลบหลาย row | ลืม WHERE |
หยุดและดู SELECT ก่อน |
| ไม่เห็นผลลัพธ์ | ลืม RETURNING * |
เพิ่ม RETURNING * เพื่อพิสูจน์ |
-# ใน psql |
SQL ยังไม่จบ | ใส่ ; แล้ว Enter |
SQL ไม่ได้ “ทำกับตาราง” แบบกว้าง ๆ — ทุกคำสั่งต้องบอก row เป้าหมายให้ชัด

รัน starter ทีละส่วนและเติม TODO:
INSERT INTO users (email, password_hash)
VALUES ('student@example.com', 'demo-hash')
RETURNING *;
INSERT INTO books (title, author, year, user_id)
VALUES ('The Little Prince', 'Antoine de Saint-Exupéry', 1943, 1)
RETURNING *;
SELECT * FROM books;
UPDATE books SET title = 'เจ้าชายน้อย' WHERE id = TODO RETURNING *;
DELETE FROM books WHERE id = TODO RETURNING *;
ก่อน UPDATE และ DELETE ให้รัน SELECT * FROM books WHERE id = ... ตรวจเป้าหมายก่อน
