คำสั่ง 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 setting | Triggers |
| Storage Engine | Partitions (บางเวอร์ชัน) |
| Character Set & Collation | Views, Stored Procedures |
| Column Comments | Data Directory / Index Directory |
คำสั่งที่เกี่ยวข้อง
CREATE TABLE new_table AS SELECT * FROM old_table- คัดลอกโครงสร้าง และ ข้อมูล (แต่ไม่คัดลอก Index, PK, FK)SHOW CREATE TABLE old_table- ดู DDL แล้วปรับเอง
หมายเหตุ: ตัวอย่างในบทความต้นฉบับมีการอ้างอิงตาราง StudentTable ที่ไม่ได้สร้างในตัวอย่าง ควรสร้างให้ครบถ้วนก่อนทดสอบ