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

Come copiare la tabella in MySQL

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!