คัดลอกโครงสร้างตารางด้วย CREATE TABLE ... LIKE
ใช้ CREATE TABLE new_table LIKE old_table เพื่อสร้างตารางใหม่ที่มีโครงสร้างเหมือนตารางเดิมทุกประการ (คอลัมน์, index, constraints, engine, charset, collation) แต่ไม่คัดลอกข้อมูล
ไวยากรณ์
CREATE TABLE new_table_name LIKE existing_table_name;
ตัวอย่างการใช้งาน
สร้างตารางต้นทาง:
CREATE TABLE ShowCreateTableCommand (
Id INT NOT NULL AUTO_INCREMENT,
FirstName VARCHAR(20),
LastName VARCHAR(20),
Age INT,
TotalMarks INT,
PRIMARY KEY(Id)
);
ตรวจสอบโครงสร้าง:
DESC ShowCreateTableCommand;
SHOW CREATE TABLE ShowCreateTableCommand\G
สร้างตารางใหม่จากตารางเดิม:
CREATE TABLE StudentInformationDemo LIKE ShowCreateTableCommand;
ตรวจสอบโครงสร้างตารางใหม่:
SHOW CREATE TABLE StudentInformationDemo\G
ผลลัพธ์ - โครงสร้างเหมือนกันทุกประการ:
CREATE TABLE `studentinformationdemo` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`FirstName` varchar(20) DEFAULT NULL,
`LastName` varchar(20) DEFAULT NULL,
`Age` int(11) DEFAULT NULL,
`TotalMarks` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
สิ่งที่ถูกคัดลอก
- คอลัมน์ทั้งหมด (ชื่อ, ชนิดข้อมูล, DEFAULT, NULL/NOT NULL)
- Primary Key, Unique Key, Foreign Key, Indexes
- AUTO_INCREMENT setting
- Storage Engine (InnoDB, MyISAM, etc.)
- Character Set และ Collation
- Table options (COMMENT, ROW_FORMAT, etc.)
สิ่งที่ ไม่ ถูกคัดลอก
- ข้อมูล (Data rows)
- Triggers
- Views ที่อ้างอิงตารางนี้
- Stored Procedures/Functions ที่อ้างอิง
- Partitioning (ในบาง version)
คำสั่งที่เกี่ยวข้อง
| คำสั่ง | คัดลอกโครงสร้าง | คัดลอกข้อมูล |
|---|---|---|
| CREATE TABLE ... LIKE | ✓ | ✗ |
| CREATE TABLE ... AS SELECT ... | ✓ (บางส่วน) | ✓ |
| INSERT INTO ... SELECT ... | ✗ | ✓ |
ตัวอย่าง: คัดลอกทั้งโครงสร้างและข้อมูล
CREATE TABLE new_table AS SELECT * FROM old_table;
หมายเหตุ: วิธีนี้ไม่คัดลอก Indexes, Constraints, AUTO_INCREMENT