Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สร้างตารางใหม่โคลนโครงสร้างจากตารางเก่าด้วย LIKE

คำสั่ง CREATE TABLE ... LIKE ใน MySQL ใช้สร้างตารางใหม่โดย **คัดลอกโครงสร้าง** (Schema) จากตารางเดิม รวมถึง Column, Index, Constraint, Engine, Charset แต่ **ไม่คัดลอกข้อมูล**

รูปแบบคำสั่ง

CREATE TABLE new_table_name LIKE existing_table_name;

ตัวอย่างขั้นตอน

1. สร้างตารางต้นฉบับและเพิ่มข้อมูล

mysql> CREATE TABLE Employee (
    -> EmployeeId INT,
    -> EmployeeName VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.54 sec)

mysql> INSERT INTO Employee VALUES (1, 'Carol'), (2, 'John'), (3, 'Johnson');

2. สร้างตารางใหม่ด้วย LIKE

mysql> CREATE TABLE StudentModifyTableDemo LIKE Employee;
Query OK, 0 rows affected (0.50 sec)

3. ตรวจสอบโครงสร้างตารางใหม่ (เหมือนเดิมทุกอย่าง)

mysql> DESC StudentModifyTableDemo;
+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| EmployeeId   | int(11)      | YES  |     | NULL    |       |
| EmployeeName | varchar(100) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+
2 rows in set (0.12 sec)

4. คัดลอกข้อมูลเข้าไป (ต้องทำแยกต่างหาก)

mysql> INSERT INTO StudentModifyTableDemo SELECT * FROM Employee;
Query OK, 3 rows affected (0.16 sec)

5. ตรวจสอบข้อมูล

mysql> SELECT * FROM StudentModifyTableDemo;
+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
| 1          | Carol        |
| 2          | John         |
| 3          | Johnson      |
+------------+--------------+
3 rows in set (0.00 sec)

สิ่งที่ LIKE คัดลอกได้ vs ไม่ได้

คัดลอกได้คัดลอกไม่ได้
Column definitions (name, type, null, default)Data (Rows)
Indexes (Primary, Unique, Normal)Foreign Key Constraints
Auto_increment settingTriggers
Storage EnginePartitions (บางเวอร์ชัน)
Character Set & CollationViews, Stored Procedures
Column CommentsData Directory / Index Directory

คำสั่งที่เกี่ยวข้อง

  • CREATE TABLE new_table AS SELECT * FROM old_table - คัดลอกโครงสร้าง และ ข้อมูล (แต่ไม่คัดลอก Index, PK, FK)
  • SHOW CREATE TABLE old_table - ดู DDL แล้วปรับเอง

หมายเหตุ: ตัวอย่างในบทความต้นฉบับมีการอ้างอิงตาราง StudentTable ที่ไม่ได้สร้างในตัวอย่าง ควรสร้างให้ครบถ้วนก่อนทดสอบ