Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tạo bảng mới copy cấu trúc từ bảng cũ với LIKE trong MySQL

Sao chép cấu trúc bảng (schema) với CREATE TABLE ... LIKE

MySQL cung cấp cú pháp CREATE TABLE new_table LIKE old_table để tạo bảng mới với chính xác cấu trúc cột, kiểu dữ liệu, index, constraint của bảng cũ - nhưng không copy dữ liệu.

1. Tạo bảng gốc (DemoTable1)

mysql> CREATE TABLE DemoTable1 (
    EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    EmployeeName VARCHAR(50)
);
mysql> INSERT INTO DemoTable1 (EmployeeName) VALUES
    ('Tom'), ('Mike'), ('Emma'), ('Sam');

2. Tạo bảng mới copy cấu trúc

mysql> CREATE TABLE DemoTable2 LIKE DemoTable1;

Kết quả: Query OK, 0 rows affected

3. Kiểm tra cấu trúc bảng mới

mysql> DESC DemoTable2;
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| EmployeeId   | int(11)     | NO   | PRI | NULL    | auto_increment |
| EmployeeName | varchar(50) | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+

4. Kiểm tra dữ liệu (rỗng)

mysql> SELECT * FROM DemoTable2;
Empty set

Được copy:

  • Tên cột, kiểu dữ liệu, độ dài
  • NULL / NOT NULL
  • DEFAULT values
  • AUTO_INCREMENT
  • PRIMARY KEY, UNIQUE, INDEX, FOREIGN KEY
  • COMMENT cột/bảng

KHÔNG được copy:

  • Dữ liệu (hàng)
  • TRIGGER
  • PARTITION
  • DATA DIRECTORY / INDEX DIRECTORY

Để copy cả cấu trúc và dữ liệu:

CREATE TABLE DemoTable3 AS SELECT * FROM DemoTable1;

Lưu ý: Cách này không copy index, constraint, AUTO_INCREMENT.

Copy hoàn chỉnh (cấu trúc + dữ liệu + index):

CREATE TABLE DemoTable4 LIKE DemoTable1;
INSERT INTO DemoTable4 SELECT * FROM DemoTable1;