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;