Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để nhân bản bảng trong MySQL

Đô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 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!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tập lệnh kiểm tra tình trạng sao chép MySQL

  2. Làm thế nào để loại bỏ khoảng trắng theo sau trong MySQL

  3. Cột không xác định trong lỗi 'danh sách trường' trên truy vấn Cập nhật MySQL

  4. Tính khả dụng cao với ngân sách hạn hẹp - Triển khai Cụm MySQL Galera tối thiểu hai nút

  5. Còn gì nhanh hơn, CHỌN DISTINCT hoặc GROUP BY trong MySQL?