0Pricing
SQL Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. INSERT หลายแถว
  2. UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
  3. UPDATE ด้วย FROM และการอัปเดตแบบ JOIN
  4. DELETE ด้วย USING และรูปแบบที่ปลอดภัย
← กลับไปที่ SQL Academy