Kodokon kodokon.com

การแก้ไขข้อมูล: INSERT, UPDATE, DELETE

เพิ่ม แก้ไข และลบแถวอย่างปลอดภัย โดยหลีกเลี่ยงกับดักคลาสสิกของการลืม WHERE

8 นาที · 3 คำถาม

เปิดบทเรียนนี้ใน Kodokon

จนถึงตอนนี้ คุณเพียงแค่ อ่าน ข้อมูลเท่านั้น ทีนี้มาต่อกันที่การเขียนข้อมูล INSERT INTO เพิ่มแถวหนึ่งแถว คุณจะระบุรายการคอลัมน์ในวงเล็บ จากนั้นระบุค่าที่ตรงกันหลัง VALUES โดยเรียงในลำดับเดียวกัน การระบุชื่อคอลัมน์อย่างชัดเจนเป็นนิสัยที่ดี เพราะคิวรีจะยังคงใช้งานได้แม้โครงสร้างของตารางจะเปลี่ยนแปลงไป

SQL
INSERT INTO books (id, title, author, genre, year, price)
VALUES (8, 'Ravage', 'Barjavel', 'sf', 1943, 7.5);

SELECT * FROM books WHERE id = 8;
การเพิ่มหนังสือเล่มที่ 8 จากนั้นตรวจสอบ

UPDATE แก้ไขแถวที่ มีอยู่แล้ว หลัง SET คุณจะระบุคอลัมน์และค่าใหม่ของมัน หลัง WHERE คุณจะระบุว่าแถวใดบ้างที่ได้รับผลกระทบ WHERE นี้สำคัญมาก เพราะมันคือสิ่งที่เจาะจงเป้าหมายของการเปลี่ยนแปลง

SQL
UPDATE books SET price = 8.9 WHERE id = 8;

SELECT title, price FROM books WHERE id = 8;
ราคาของ Ravage เปลี่ยนจาก 7.5 เป็น 8.9

DELETE FROM ลบแถวออก เช่นเดียวกับ UPDATE ประโยค WHERE จะระบุแถวที่ต้องการลบ ส่วนแถวอื่น ๆ จะยังคงอยู่ครบถ้วน มาลบหนังสือที่เราเพิ่งเพิ่มเข้าไป แล้วตรวจสอบจำนวนกัน

SQL
DELETE FROM books WHERE id = 8;

SELECT COUNT(*) FROM books;
กลับมาที่ 7 แถว ตารางเดิมยังคงอยู่ครบถ้วน
SQL
BEGIN;
DELETE FROM books WHERE genre = 'sf';
SELECT COUNT(*) FROM books;
ROLLBACK;
SELECT COUNT(*) FROM books;
3 แถวระหว่างทรานแซกชัน และ 7 แถวหลังจาก ROLLBACK

ทดสอบความรู้

ตรวจสอบว่าคุณจำประเด็นสำคัญของบทเรียนนี้ได้ครบถ้วน

  1. คิวรี DELETE FROM books; ทำอะไรเมื่อรันโดยไม่มี WHERE?
    • มันลบแถวแรกของตาราง
    • มันลบทุกแถวของตาราง
    • มันทำให้เกิดข้อผิดพลาดทางไวยากรณ์
  2. คิวรีใดเปลี่ยนราคาของหนังสือที่มี id 3 ให้เป็น 6.9?
    • UPDATE books SET price = 6.9 WHERE id = 3;
    • INSERT INTO books SET price = 6.9;
    • SELECT price = 6.9 FROM books WHERE id = 3;
  3. ในทรานแซกชัน ROLLBACK มีไว้เพื่ออะไร?
    • เพื่อยืนยันการเปลี่ยนแปลงอย่างถาวร
    • เพื่อยกเลิกการเปลี่ยนแปลงทั้งหมดที่ทำมาตั้งแต่ BEGIN
    • เพื่อลบตารางที่ได้รับผลกระทบ