คำอธิบาย
ใช้ CREATE TABLE ... LIKE เพื่อคัดลอกโครงสร้างตาราง (Columns, Indexes, Constraints, Engine, Charset) ทุกอย่าง ยกเว้นข้อมูล (Data) และ Auto Increment Value
ขั้นตอนการสร้างตารางต้นทางและข้อมูล
mysql> create table DemoTable1 (
EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
EmployeeName varchar(50) );
Query OK, 0 rows affected (0.48 sec)
mysql> insert into DemoTable1(EmployeeName) values('Tom');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1(EmployeeName) values('Mike');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1(EmployeeName) values('Emma');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1(EmployeeName) values('Sam');
Query OK, 1 row affected (0.10 sec)
คำสั่งโคลนโครงสร้าง
mysql> create table DemoTable2 LIKE DemoTable1; Query OK, 0 rows affected (0.55 sec)
ตรวจสอบโครงสร้างตารางใหม่
mysql> desc DemoTable2;
ผลลัพธ์ (โครงสร้างเหมือนกันทุกอย่าง):
+--------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+----------------+ | EmployeeId | int(11) | NO | PRI | NULL | auto_increment | | EmployeeName | varchar(50) | YES | | NULL | | +--------------+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec)
สิ่งที่ถูกคัดลอก (Copied)
- Column definitions (Name, Type, Null, Default)
- Indexes (Primary Key, Unique, Foreign Key)
- Auto Increment attribute
- Table Engine (InnoDB, MyISAM, etc.)
- Character Set และ Collation
- Partitioning
สิ่งที่ ไม่ ถูกคัดลอก
- Data (ข้อมูลในตาราง)
- Auto Increment Current Value (เริ่มที่ 1 ใหม่)
- Data Directory / Index Directory
- Foreign Key Constraints ที่อ้างอิงตารางอื่น (ต้องสร้างใหม่)
ทางเลือกอื่น: CREATE TABLE ... AS SELECT
CREATE TABLE DemoTable3 AS SELECT * FROM DemoTable1;
คัดลอกทั้งโครงสร้างและข้อมูล แต่ ไม่คัดลอก Indexes, Constraints, Auto Increment