INSERT หลายแถว
เพิ่มแถวเดียวหรือหลายแถวด้วยคำสั่งเดียว และใช้ INSERT ... SELECT เพื่อคัดลอกข้อมูลระหว่างตาราง
INSERT หลายแถว เป็นบทเรียน SQL Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน SQL Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
INSERT แถวเดียว
รูปแบบที่ง่ายที่สุดคือระบุชื่อคอลัมน์และป้อนค่า:
INSERT INTO users (email, full_name)
VALUES ('alice@example.com', 'Alice Adams');INSERT หลายแถว
แทรกหลายแถวในคำสั่งเดียว เร็วกว่าการติดต่อไปกลับหลายครั้ง:
INSERT INTO users (email, full_name) VALUES
('alice@example.com', 'Alice Adams'),
('bob@example.com', 'Bob Brown'),
('carol@example.com', 'Carol Chen');เหตุใดหลายแถวจึงเร็วกว่า
การไปกลับถึงฐานข้อมูลน้อยลง รอบการแยกวิเคราะห์และวางแผนน้อยลง และเขียน WAL ลงดิสก์เพียงครั้งเดียว สำหรับการเพิ่มข้อมูลจำนวนหลายร้อยแถวแบบเป็นชุด การใช้หลายค่า VALUES จะเร็วกว่าเพิ่มทีละแถว 5–10 เท่า
ค่าเริ่มต้น
ละเว้นคอลัมน์เพื่อใช้ค่า DEFAULT (หรือ NULL):
INSERT INTO orders (user_id, total)
VALUES (1, 99.50);
-- id, created_at, status filled by DEFAULTsระบุ DEFAULT อย่างชัดเจน
หรือใช้คีย์เวิร์ด DEFAULT:
INSERT INTO orders (id, user_id, total, status)
VALUES (DEFAULT, 1, 99.50, DEFAULT);RETURNING
รับค่าคอลัมน์ของแถวที่เพิ่มข้อมูลกลับมาโดยไม่ต้องใช้คำสั่งสอบถามครั้งที่สอง (PostgreSQL):
INSERT INTO users (email, full_name)
VALUES ('alice@example.com', 'Alice Adams')
RETURNING id, created_at;INSERT … SELECT
คัดลอกหรือแปลงแถวจากตารางอื่น:
INSERT INTO archive_orders (id, user_id, total)
SELECT id, user_id, total
FROM orders
WHERE created_at < NOW() - INTERVAL '5 years';การโหลดข้อมูลจำนวนมากด้วย COPY
สำหรับข้อมูลจำนวนหลายหมื่นแถวขึ้นไป ให้ใช้คำสั่ง COPY ซึ่งเป็นวิธีที่เร็วที่สุดอย่างเห็นได้ชัด:
COPY users (email, full_name) FROM '/tmp/users.csv' (FORMAT csv, HEADER true);
-- Or from STDIN in a client:
COPY users (email, full_name) FROM STDIN;
alice@example.com\tAlice
bob@example.com\tBob
\.หลีกเลี่ยงการเพิ่มข้อมูลในธุรกรรมขนาดใหญ่โดยไม่มีเหตุผล
หนึ่งธุรกรรม = หนึ่งบล็อกที่ทำงานเป็นหน่วยเดียว หากการนำเข้าหนึ่งล้านแถวล้มเหลวระหว่างทาง ทุกอย่างจะถูกย้อนกลับ บางครั้งคุณต้องการเช่นนั้น แต่บางครั้งก็ควรแบ่งเป็นชุดละ 10,000 แถว
เคล็ดลับด้านประสิทธิภาพของ INSERT
สำหรับการเพิ่มข้อมูลจำนวนมาก:
- ลบดัชนีรองออก เพิ่มข้อมูล แล้วสร้างดัชนีเหล่านั้นใหม่
- ปิดใช้ทริกเกอร์และการตรวจสอบ FK หากปลอดภัย
- ใช้ COPY เมื่อทำได้
- ปรับค่า
maintenance_work_memสำหรับการสร้างดัชนีใหม่
ตัวอย่างการจัดการข้อขัดแย้ง
หากต้องการเพิ่มข้อมูลเมื่อเป็นข้อมูลใหม่ และอัปเดตเมื่อมีข้อมูลอยู่แล้ว ให้ใช้ INSERT ... ON CONFLICT ซึ่งจะอธิบายในบทเรียนถัดไป
สรุป
INSERT ใช้งานตรงไปตรงมา ส่วนหลายแถวด้วย VALUES และ INSERT … SELECT ครอบคลุมกรณีที่พบได้ในแต่ละวัน RETURNING ช่วยหลีกเลี่ยงการไปกลับเพิ่มเติม สำหรับข้อมูลจำนวนมาก ให้ใช้ COPY
ตรวจสอบความเข้าใจอย่างรวดเร็ว
วิธีใดเร็วที่สุดในการโหลดข้อมูล 100,000 แถวจากไฟล์ CSV เข้าสู่ PostgreSQL
คำถามที่พบบ่อย
บทเรียน “INSERT หลายแถว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “INSERT หลายแถว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส SQL Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส SQL Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “INSERT หลายแถว”
เพิ่มแถวเดียวหรือหลายแถวด้วยคำสั่งเดียว และใช้ INSERT ... SELECT เพื่อคัดลอกข้อมูลระหว่างตาราง คุณปฏิบัติ SQL Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน SQL Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน SQL Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “INSERT หลายแถว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน SQL Academy นี้ได้ไหม
ได้ บทเรียน SQL Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- INSERT หลายแถว
- UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
- UPDATE ด้วย FROM และการอัปเดตแบบ JOIN
- DELETE ด้วย USING และรูปแบบที่ปลอดภัย