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

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


คำอธิบาย

ใช้ 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