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

Tạo bảng mới từ bảng hiện có trong MySQL (CREATE TABLE ... LIKE)

Để tạo một bảng mới có cấu trúc (schema) giống hệt bảng hiện có (cột, kiểu dữ liệu, index, khóa chính, v.v.) nhưng **không copy dữ liệu**, bạn dùng cú pháp CREATE TABLE ... LIKE.

Cú pháp

CREATE TABLE ten_bang_moi LIKE ten_bang_cu;

Ví dụ minh họa

1. Tạo bảng gốc

CREATE TABLE ShowCreateTableCommand (
    Id INT NOT NULL AUTO_INCREMENT,
    FirstName VARCHAR(20),
    LastName VARCHAR(20),
    Age INT,
    TotalMarks INT,
    PRIMARY KEY(Id)
);

2. Kiểm tra cấu trúc bảng gốc

DESC ShowCreateTableCommand;

Kết quả:

+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| Id         | int(11)     | NO   | PRI | NULL    | auto_increment |
| FirstName  | varchar(20) | YES  |     | NULL    |                |
| LastName   | varchar(20) | YES  |     | NULL    |                |
| Age        | int(11)     | YES  |     |         |                |
| TotalMarks | int(11)     | YES  |     |         |                |
+------------+-------------+------+-----+---------+----------------+

3. Xem DDL chi tiết (SHOW CREATE TABLE)

SHOW CREATE TABLE ShowCreateTableCommand\G

Kết quả:

CREATE TABLE `showcreatetablecommand` (
  `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

4. Tạo bảng mới từ bảng cũ

CREATE TABLE StudentInformationDemo LIKE ShowCreateTableCommand;

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

SHOW CREATE TABLE StudentInformationDemo\G

Kết quả: Cấu trúc y hệt bảng gốc (kể cả engine, charset, collate, auto_increment).

Đặc điểm của CREATE TABLE ... LIKE

Đặc điểmGiải thích
Cấu trúc cộtCopy y hệt (tên, kiểu, NULL/DEFAULT)
Index/KeyCopy PRIMARY KEY, UNIQUE, INDEX, FOREIGN KEY
Engine/CharsetCopy ENGINE, CHARSET, COLLATE
AUTO_INCREMENTCopy giá trị counter hiện tại
Dữ liệuKHÔNG copy - bảng mới rỗng
Trigger/PartitionKHÔNG copy
ViewKhông áp dụng cho VIEW

Các cách tạo bảng từ bảng khác

Cú phápCopy cấu trúcCopy dữ liệuGhi chú
CREATE TABLE new LIKE old✅❌Chỉ schema
CREATE TABLE new AS SELECT * FROM old✅ (kể cả PK? Không)✅Mất PK, AI, Index
CREATE TABLE new AS SELECT * FROM old WHERE 1=0✅ (gần giống)❌Mất PK, AI, Index

Best Practice: Copy cả cấu trúc và dữ liệu

-- Bước 1: Tạo bảng mới với cấu trúc y hệt
CREATE TABLE new_table LIKE old_table;

-- Bước 2: Copy dữ liệu
INSERT INTO new_table SELECT * FROM old_table;

Cách này bảo toàn khóa chính, auto_increment, index, foreign key.