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

สร้างตารางใหม่จากตารางเดิมใน MySQL (CREATE TABLE LIKE)

คัดลอกโครงสร้างตารางด้วย 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