A volte potrebbe essere necessario copiare la tabella in MySQL. Esistono molti modi diversi per copiare la tabella in MySQL. Ecco i passaggi per copiare la tabella in MySQL. Puoi usarli per copiare la tabella in un'altra tabella, copiare la tabella da un database all'altro, copiare la struttura della tabella, copiare la tabella con i dati, copiare la struttura della tabella con l'indice o copiare la tabella da un server all'altro.
Come copiare una tabella in MySQL
Ecco come copiare la tabella in MySQL. Esistono diversi casi d'uso per copiare la tabella in MySQL. Analizzeremo ciascuno di essi in dettaglio.
MySQL Copia i dati da una tabella a una nuova tabella
In genere, è necessario copiare la tabella in MySQL in una nuova tabella. In questo caso, è necessario utilizzare l'istruzione CREATE TABLE e SELECT come mostrato di seguito
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Nella query precedente, è necessario specificare i nomi della tabella esistente insieme alle colonne che si desidera copiare e anche il nuovo nome della tabella. MySQL popolerà la tua nuova tabella con il risultato della tua istruzione SELECT.
Supponiamo che tu abbia una tabella esistente elenco_prodotti
mysql> select * from product_list; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Ecco la query SQL per copiare elenco_prodotti tabella in una nuova tabella chiamata new_product_list
mysql> create table new_product_list select * from product_list; mysql> select * from new_product_list; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Tieni presente 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 la clausola IF NOT EXIST nell'istruzione CREATE TABLE, come mostrato di seguito.
mysql> create table if not exist new_product_list select * from product_list;
Bonus Leggi:Come aggiungere il vincolo NOT NULL in MySQL
Se desideri copiare solo dati parziali da una tabella a una nuova tabella, ovvero alcune righe ma non tutte, 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 elenco_prodotti tabella in una nuova tabella denominata new_products2
mysql> create table new_products2 select * from product_list where product_id=1; mysql> select * from new_products2; +------------+--------------+-------+ | product_id | product_name | price | +------------+--------------+-------+ | 1 | iPhone 11 | 400 | +------------+--------------+-------+
Bonus Lettura:come aggiungere un vincolo predefinito in MySQL
MySQL Copia la struttura della tabella in una nuova tabella
Le query SQL 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 (id)
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Come puoi vedere, la tabella new_orders ha anche un campo chiave primaria id. L'istruzione precedente copierà solo la struttura della tabella ma non i dati. Devi copiare separatamente i dati, come mostrato nella sezione successiva.
Bonus Lettura:MySQL Seleziona le prime N righe per gruppo
MySQL Copia i dati da una tabella a una tabella esistente
L'istruzione precedente creerà una nuova tabella con la struttura della vecchia tabella, ma sarà una tabella vuota. 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 Copy Database
Copia tabella MySQL da un database all'altro
Se desideri duplicare la tabella in MySQL da un database all'altro, includi semplicemente i nomi del database nei nomi delle tabelle mentre utilizzi le query SQL precedenti, 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 SQL precedente duplicherà la struttura della tabella in MySQL dal database di origine (ad es. source_db ) a un altro (ad es. 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 copiare la tabella in MySQL. Fai attenzione quando copi 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!