Đôi khi bạn có thể cần sao chép dữ liệu từ bảng này sang bảng khác trong MySQL hoặc sao chép bảng trong MySQL. Đây là cách sao chép bảng trong MySQL. Bạn có thể sử dụng nó để sao chép bảng trong MySQL hoặc sao chép cấu trúc bảng, hoặc thậm chí sao chép bảng từ cơ sở dữ liệu này sang cơ sở dữ liệu khác.
Cách Sao chép Bảng trong MySQL
Dưới đây là các bước để sao chép bảng trong MySQL. Có nhiều trường hợp sử dụng khác nhau để sao chép dữ liệu từ bảng này sang bảng khác. Chúng tôi sẽ xem xét từng chi tiết.
MySQL Sao chép dữ liệu từ một bảng sang một bảng mới
Nếu bạn cần sao chép bảng trong MySQL sang một bảng mới, bạn cần sử dụng câu lệnh CREATE TABLE và SELECT như hình dưới đây
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Giả sử bạn có một bảng sản phẩm hiện có
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Đây là truy vấn SQL để sao chép sản phẩm bảng thành bảng mới có tên new_products
mysql> create table new_products select * from products; mysql> select * from new_products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Điều quan trọng cần lưu ý là bảng mới sẽ chỉ được tạo nếu nó không tồn tại. Nếu không, bạn sẽ gặp lỗi. Để tránh gặp lỗi khi bạn sao chép bảng trong MySQL, bạn có thể sử dụng câu lệnh IF NOT EXIST trong CREATE TABLE, như được hiển thị bên dưới.
mysql> create table if not exist new_products select * from products;
Phần thưởng đã đọc:Quy trình được lưu trữ trong MySQL với các tham số
Để chỉ sao chép một phần dữ liệu từ một bảng sang bảng mới, bạn có thể sử dụng điều kiện WHERE trong câu lệnh SELECT như được hiển thị
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Đây là truy vấn SQL để sao chép một phần dữ liệu từ sản phẩm bảng thành bảng mới có tên new_products2
mysql> create table new_products2 select * from products where product_id=1; mysql> select * from new_products2; +------------+--------------+-------+ | product_id | product_name | price | +------------+--------------+-------+ | 1 | iPhone 11 | 400 | +------------+--------------+-------+
Phần thưởng đọc:Cách tạo khóa chính tổng hợp trong MySQL
Sao chép cấu trúc bảng MySQL sang bảng mới
Các truy vấn trên chỉ sao chép bảng và dữ liệu. Họ sẽ không sao chép các đối tượng bảng như khóa chính, chỉ mục, ràng buộc, trình kích hoạt. Để sao chép cấu trúc bảng và dữ liệu, bạn cần sử dụng câu lệnh CREATE TABLE với từ khóa LIKE, như hình dưới đây
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Giả sử bạn có một đơn đặt hàng bảng có khóa chính
mysql> describe orders; +--------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | product_name | varchar(255) | NO | | NULL | | | order_date | date | YES | | NULL | | | price | int(11) | NO | | NULL | | | description | text | YES | | NULL | | | created_at | timestamp | NO | | CURRENT_TIMESTAMP | | +--------------+--------------+------+-----+-------------------+----------------+
và bạn muốn sao chép cấu trúc của đơn đặt hàng tới new_orders bàn. Đây là truy vấn SQL để sao chép cấu trúc bảng sang bảng mới.
mysql> create table new_orders like orders; mysql> describe new_orders; +--------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | product_name | varchar(255) | NO | | NULL | | | order_date | date | YES | | NULL | | | price | int(11) | NO | | NULL | | | description | text | YES | | NULL | | | created_at | timestamp | NO | | CURRENT_TIMESTAMP | | +--------------+--------------+------+-----+-------------------+----------------+
Phần thưởng đọc:Cách cắt ngắn bảng trong MySQL
MySQL Sao chép dữ liệu từ một bảng sang bảng hiện có
Câu lệnh trên sẽ tạo bảng mới với cấu trúc của bảng cũ. Sau đó, bạn cần sử dụng câu lệnh INSERT để sao chép dữ liệu từ bảng cũ sang bảng mới.
INSERT new_table SELECT * FROM existing_table;
Đây là truy vấn SQL để sao chép dữ liệu từ đơn đặt hàng vào bảng hiện có new_orders
mysql> insert new_orders select * from orders; mysql> select * from orders; +----+--------------+------------+-------+-------------+---------------------+ | id | product_name | order_date | price | description | created_at | +----+--------------+------------+-------+-------------+---------------------+ | 1 | A | 2020-07-01 | 150 | New product | 2020-06-01 00:00:00 | | 2 | B | 2020-07-01 | 235 | Old product | 2020-06-15 00:00:00 | +----+--------------+------------+-------+-------------+---------------------+
Phần thưởng đã đọc:CHẾ ĐỘ XEM DROP của MySQL
Bảng sao chép MySQL từ cơ sở dữ liệu này sang cơ sở dữ liệu khác
Nếu bạn muốn sao chép bảng trong MySQL từ cơ sở dữ liệu sang cơ sở dữ liệu khác, thì chỉ cần đưa tên cơ sở dữ liệu vào tên bảng của bạn, như được in đậm bên dưới
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
Câu lệnh đầu tiên sẽ sao chép cấu trúc bảng trong MySQL từ cơ sở dữ liệu nguồn (ví dụ:source_db) sang một bảng khác (ví dụ:destination_db). Câu lệnh thứ hai sẽ sao chép dữ liệu từ bảng này sang bảng khác.
Thay thế source_db và destination_db trong các truy vấn trên với cơ sở dữ liệu nguồn và đích tương ứng.
Hy vọng rằng, bài viết này sẽ giúp bạn nhân bản bảng trong MySQL. Hãy cẩn thận khi bạn sao chép bảng trong MySQL, với số lượng lớn các bản ghi, vì nó có thể mất nhiều thời gian và tài nguyên.
Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!