08 INSERT, UPDATE, DELETE และ Transaction
INSERT, UPDATE, DELETE และ Transaction
นอกจากอ่านข้อมูล SQL ยังใช้เปลี่ยนแปลงข้อมูลได้ ต้องระวังเป็นพิเศษ เพราะกระทบข้อมูลจริง
INSERT
เพิ่มข้อมูลใหม่
INSERT INTO customers (customer_id, name, country)
VALUES (1, 'Ann', 'Thailand');
เพิ่มหลาย row
INSERT INTO customers (customer_id, name, country)
VALUES
(2, 'Bob', 'Singapore'),
(3, 'Cat', 'Japan');
UPDATE
แก้ไขข้อมูล
UPDATE customers
SET country = 'Thailand'
WHERE customer_id = 1;
ห้ามลืม WHERE ถ้าไม่ได้ตั้งใจแก้ทุก row
DELETE
ลบข้อมูล
DELETE FROM customers
WHERE customer_id = 3;
ห้ามลืม WHERE ถ้าไม่ได้ตั้งใจลบทุก row
ตรวจสอบก่อนแก้
ก่อน UPDATE หรือ DELETE ควรใช้ SELECT ตรวจสอบ row ที่จะกระทบก่อน
SELECT *
FROM customers
WHERE customer_id = 1;
Transaction
Transaction ช่วยรวมหลายคำสั่งเป็นชุด ถ้ามีปัญหาสามารถ rollback ได้
BEGIN;
UPDATE accounts
SET balance = balance - 100
WHERE account_id = 1;
UPDATE accounts
SET balance = balance + 100
WHERE account_id = 2;
COMMIT;
ถ้าพบปัญหา:
ROLLBACK;
Soft Delete
งานจริงบางระบบไม่ลบข้อมูลจริง แต่ใช้ flag
UPDATE customers
SET deleted_at = CURRENT_TIMESTAMP
WHERE customer_id = 1;
แบบฝึกหัด
- เพิ่ม customer ใหม่ 3 คน
- แก้ประเทศของ customer 1 คน
- ลบ customer 1 คนโดยมี
WHERE - เขียน
SELECTตรวจสอบก่อนUPDATE - อธิบายว่าเมื่อไรควรใช้ transaction