วิธีคัดลอกตารางใน MySQL: โครงสร้าง, ข้อมูล, ดัชนี และวิธีที่ดีที่สุดที่อธิบาย

目次

1. บทนำ

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

2. แนวคิดพื้นฐานและกรณีการใช้งานของการคัดลอกตาราง

มีสามวิธีหลักสำหรับการคัดลอกตาราง: “คัดลอกโครงสร้างเท่านั้น”, “คัดลอกโครงสร้างและข้อมูล”, และ “คัดลอกเต็มรูปแบบรวมถึงดัชนีและข้อจำกัด” เลือกวิธีที่เหมาะสมที่สุดตามกรณีการใช้งานของคุณ

กรณีการใช้งานหลักสำหรับการคัดลอกตาราง

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

3. วิธีคัดลอกเฉพาะโครงสร้างของตาราง

หากคุณต้องการคัดลอกเฉพาะโครงสร้างของตาราง คำสั่ง CREATE TABLE ... LIKE จะสะดวก วิธีนี้ทำสำเนา schema ของตาราง (การกำหนดคอลัมน์และประเภทข้อมูล) แต่ไม่รวมข้อมูล

การใช้ CREATE TABLE … LIKE

  • ไวยากรณ์พื้นฐาน
    CREATE TABLE new_table_name LIKE original_table_name;
    
  • ตัวอย่าง ตัวอย่างเช่น หากต้องการทำสำเนาเฉพาะโครงสร้างของตาราง employees และสร้างตารางใหม่ชื่อ employees_backup ให้ใช้คำสั่ง SQL ต่อไปนี้:
    CREATE TABLE employees_backup LIKE employees;
    
  • ข้อดี วิธีนี้ง่ายมากและทำให้คุณคัดลอกการกำหนดคอลัมน์ของตารางได้ตามเดิม ดัชนีและข้อจำกัดก็จะถูกคัดลอกด้วย ทำให้เหมาะสมเมื่อคุณต้องการทำซ้ำโครงสร้างพื้นฐานของตาราง
  • หมายเหตุสำคัญ ข้อมูลจะไม่ถูกคัดลอก นอกจากนี้ หากมีข้อจำกัด foreign key ที่กำหนดเองอยู่ การพึ่งพาตารางอื่นจะไม่ถูกปรับค่าอัตโนมัติ

4. วิธีคัดลอกทั้งโครงสร้างและข้อมูลของตาราง

หากคุณต้องการคัดลอกไม่เพียงโครงสร้างของตารางแต่รวมถึงข้อมูลด้วย ให้ใช้คำสั่ง CREATE TABLE ... AS SELECT วิธีนี้เหมาะเมื่อทำสำเนาตารางพร้อมข้อมูล

การใช้ CREATE TABLE … AS SELECT

  • ไวยากรณ์พื้นฐาน
    CREATE TABLE new_table_name AS SELECT * FROM original_table_name;
    
  • ตัวอย่าง ตัวอย่างเช่น หากต้องการคัดลอกทั้งโครงสร้างและข้อมูลของตาราง employees ไปยังตารางใหม่ชื่อ employees_full_backup ให้ใช้คำสั่ง SQL ต่อไปนี้:
    CREATE TABLE employees_full_backup AS SELECT * FROM employees;
    
  • ข้อดี เนื่องจากโครงสร้างและข้อมูลถูกคัดลอกพร้อมกัน วิธีนี้เหมาะสำหรับการสร้างการสำรองข้อมูลตารางเต็มรูปแบบอย่างรวดเร็ว
  • หมายเหตุสำคัญ ดัชนีและข้อจำกัด foreign key จะไม่ถูกคัดลอกด้วยวิธีนี้ หากต้องการ คุณต้องสร้างดัชนีและข้อจำกัดเหล่านั้นใหม่ด้วยตนเองหลังจากคัดลอกข้อมูลเสร็จ

5. วิธีทำการคัดลอกเต็มรูปแบบรวมถึงดัชนีและข้อจำกัด

หากคุณต้องการทำสำเนาตารางอย่างสมบูรณ์รวมถึงดัชนีและข้อจำกัด ให้รวมคำสั่ง CREATE TABLE ... LIKE กับคำสั่ง INSERT INTO ... SELECT เข้าด้วยกัน

การรวม CREATE TABLE … LIKE และ INSERT INTO … SELECT

  • ขั้นตอน
  1. คัดลอกโครงสร้างด้วย CREATE TABLE ... LIKE .
  2. แทรกข้อมูลด้วย INSERT INTO ... SELECT .
  • ตัวอย่าง
    CREATE TABLE employees_full_copy LIKE employees;
    INSERT INTO employees_full_copy SELECT * FROM employees;
    
  • ข้อดี วิธีนี้สร้างสำเนาเต็มรูปแบบพร้อมคงดัชนีและข้อจำกัดไว้ ทำให้เหมาะสำหรับการสำรองฐานข้อมูลหรือการทำสำเนา
  • หมายเหตุสำคัญ หากตารางมีข้อมูลจำนวนมาก การดำเนินการ INSERT อาจใช้เวลานาน นอกจากนี้ การมีดัชนีหรือ foreign key จำนวนมากอาจทำให้โหลดเซิร์ฟเวอร์เพิ่มขึ้นชั่วคราว

6. การคัดลอกตารางระหว่างฐานข้อมูลต่าง ๆ

When copying a table to another database, specify the database name to distinguish between the source and destination tables.

วิธีคัดลอกระหว่างฐานข้อมูลต่างกัน

  • ไวยากรณ์พื้นฐาน
    CREATE TABLE new_database.new_table AS SELECT * FROM source_database.original_table;
    
  • ตัวอย่าง นี่คือตัวอย่างการคัดลอกตาราง employees จากฐานข้อมูล test_db ไปยังฐานข้อมูล backup_db.
    CREATE TABLE backup_db.employees_copy AS SELECT * FROM test_db.employees;
    
  • หมายเหตุสำคัญ เมื่อคัดลอกตารางระหว่างฐานข้อมูลต่างกัน คุณอาจต้องมีสิทธิ์ผู้ใช้ที่เหมาะสมและการตั้งค่าการเชื่อมต่อฐานข้อมูลที่ถูกต้อง.

7. การคัดลอกตารางโดยใช้ phpMyAdmin

การใช้ phpMyAdmin ช่วยให้คุณคัดลอกตารางได้อย่างง่ายดายผ่านอินเทอร์เฟซกราฟิก (GUI) วิธีนี้แนะนำสำหรับผู้ใช้ที่ไม่สะดวกในการเขียนคำสั่ง SQL.

ขั้นตอนใน phpMyAdmin

  1. เข้าสู่ระบบ phpMyAdmin และเลือกตารางที่คุณต้องการคัดลอก.
  2. ไปที่แท็บ “Operations” และเลือก “Copy table to (database.table)”.
  3. เลือก “Structure only” หรือ “Structure and data”, ระบุชื่อตารางใหม่ แล้วดำเนินการ.

ข้อดี

GUI ทำให้การดำเนินการง่ายขึ้นและไม่ต้องเขียนคำสั่ง SQL ทำให้ผู้เริ่มต้นก็สามารถใช้งานได้.

หมายเหตุสำคัญ

อาจมีข้อความยืนยันปรากฏขึ้นระหว่างกระบวนการใน phpMyAdmin ระมัดระวังโดยเฉพาะเมื่อเปลี่ยนแปลงสิทธิ์.

8. ข้อควรพิจารณาที่สำคัญและแนวปฏิบัติที่ดีที่สุดเมื่อคัดลอกตาราง

เมื่อคัดลอกตาราง ควรพิจารณาความสอดคล้องของข้อมูลและประสิทธิภาพ ใช้ transaction หากจำเป็นเพื่อให้การดำเนินการปลอดภัย.

ปัจจัยสำคัญที่ควรพิจารณาในระหว่างการคัดลอก

  • ความสอดคล้องของข้อมูล ในสภาพแวดล้อมที่ข้อมูลอัปเดตบ่อย ควรล็อกตารางก่อนคัดลอกหรือใช้ transaction เพื่อรักษาความสอดคล้อง.
  • ประสิทธิภาพ การคัดลอกตารางขนาดใหญ่อาจทำให้เซิร์ฟเวอร์โหลดสูง ควรหลีกเลี่ยงช่วงเวลาที่มีการใช้งานสูงหรือพิจารณาใช้เครื่องมือสำรองข้อมูลเฉพาะ.
  • ตรวจสอบการสำรองข้อมูล เพื่อป้องกันการสูญหายหรือข้อผิดพลาด แนะนำให้สร้างสำรองข้อมูลก่อนทำการคัดลอก.

9. สรุป

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