Mysql
 sql >> Database >  >> RDS >> Mysql

Come duplicare una tabella in MySQL

A volte potrebbe essere necessario copiare i dati da una tabella all'altra in MySQL o copiare tabelle in MySQL. Ecco come duplicare la tabella in MySQL. Puoi usarlo per clonare tabelle in MySQL o copiare la struttura delle tabelle, o anche copiare tabelle da un database all'altro.

Come duplicare una tabella in MySQL

Ecco i passaggi per duplicare la tabella in MySQL. Esistono diversi casi d'uso per copiare i dati da una tabella all'altra. Analizzeremo ciascuno di essi in dettaglio.

MySQL Copia i dati da una tabella a una nuova tabella

Se è necessario duplicare la tabella in MySQL in una nuova tabella, è necessario utilizzare CREATE TABLE e l'istruzione SELECT come mostrato di seguito

CREATE TABLE new_table 
SELECT column, column2, column3 
FROM
    existing_table;

Supponiamo che tu abbia una tabella prodotti esistente

mysql> select * from products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+

Ecco la query SQL per copiare prodotti tabella in una nuova tabella chiamata 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 |
+------------+--------------------+-------+

È importante notare che la nuova tabella verrà creata solo se non esiste. In caso contrario, riceverai un errore. Per evitare di ricevere un errore quando duplichi una tabella in MySQL, puoi usare IF NOT EXIST nell'istruzione CREATE TABLE, come mostrato di seguito.

mysql> create table if not exist new_products
       select *
       from products;

Bonus Lettura:procedura memorizzata MySQL con parametri

Per copiare solo dati parziali da una tabella alla nuova tabella, puoi utilizzare la condizione WHERE nella tua istruzione SELECT come mostrato

CREATE TABLE new_table 
SELECT column1, column2, column3 
FROM
    existing_table
WHERE
    conditions;

Ecco la query SQL per copiare dati parziali da prodotti tabella in una nuova tabella denominata 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 |
+------------+--------------+-------+

Bonus Leggi:Come creare una chiave primaria composita in MySQL

MySQL Copia la struttura della tabella in una nuova tabella

Le query precedenti copiano solo tabelle e dati. Non copieranno oggetti tabella come chiave primaria, indici, vincoli, trigger. Per copiare la struttura della tabella e i dati, è necessario utilizzare l'istruzione CREATE TABLE con la parola chiave LIKE, come mostrato di seguito

CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;

Supponiamo che tu abbia un ordini tabella con chiave primaria

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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

e vuoi copiare la struttura degli ordini a nuovi_ordini tavolo. Ecco la query SQL per copiare la struttura della tabella in una nuova tabella.

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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

Bonus Leggi:Come troncare la tabella in MySQL

MySQL Copia i dati da una tabella a una tabella esistente

L'istruzione sopra creerà una nuova tabella con la struttura della vecchia tabella. Quindi è necessario utilizzare l'istruzione INSERT per copiare i dati dalla vecchia tabella alla nuova tabella.

INSERT new_table
SELECT * FROM existing_table;

Ecco la query SQL per copiare i dati da ordini alla tabella esistente 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 |
+----+--------------+------------+-------+-------------+---------------------+

Bonus Lettura:MySQL DROP VIEW

Copia tabella MySQL da un database all'altro

Se desideri duplicare la tabella in MySQL da un database all'altro, includi semplicemente i nomi dei database nei nomi delle tabelle, come mostrato di seguito in grassetto

CREATE TABLE destination_db.new_table 
LIKE source_db.existing_table;

INSERT destination_db.new_table 
SELECT *
FROM source_db.existing_table;

La prima istruzione duplicherà la struttura della tabella in MySQL dal database di origine (ad esempio source_db) a un altro (ad esempio destination_db). La seconda istruzione copierà i dati da una tabella all'altra.

Sostituisci db_sorgente e destination_db nelle query precedenti rispettivamente con i database di origine e di destinazione.

Si spera che questo articolo ti aiuti a duplicare la tabella in MySQL. Fai attenzione quando duplichi una tabella in MySQL, con un numero elevato di record, poiché può richiedere molto tempo e risorse.

Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!