Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como copiar tabela no MySQL


Às vezes você pode precisar copiar a tabela no MySQL. Existem muitas maneiras diferentes de copiar a tabela no MySQL. Aqui estão as etapas para copiar a tabela no MySQL. Você pode usá-los para copiar tabela para outra tabela, copiar tabela de um banco de dados para outro, copiar estrutura de tabela, copiar tabela com dados, copiar estrutura de tabela com índice ou copiar tabela de um servidor para outro.


Como copiar tabelas no MySQL


Veja como copiar a tabela no MySQL. Existem diferentes casos de uso para copiar tabelas no MySQL. Veremos cada um deles em detalhes.


MySQL Copiar dados de uma tabela para uma nova tabela


Normalmente, você precisa copiar a tabela no MySQL para uma nova tabela. Neste caso, você precisa usar a instrução CREATE TABLE e SELECT conforme mostrado abaixo
CREATE TABLE new_table 
SELECT column, column2, column3 
FROM
    existing_table;

Na consulta acima, você precisa especificar os nomes da tabela existente junto com as colunas que deseja copiar e também o novo nome da tabela. O MySQL preencherá sua nova tabela com o resultado de sua instrução SELECT.

Digamos que você tenha uma tabela existente product_list
mysql> select * from product_list;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+



Aqui está a consulta SQL para copiar product_list tabela em uma nova tabela chamada 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 |
+------------+--------------------+-------+

Observe que a nova tabela será criada somente se não existir. Caso contrário, você receberá um erro. Para evitar um erro ao duplicar a tabela no MySQL, você pode usar a cláusula IF NOT EXIST na instrução CREATE TABLE, conforme mostrado abaixo.
mysql> create table if not exist new_product_list
       select *
       from product_list;

Leitura de bônus:Como adicionar restrição NOT NULL no MySQL



Se você deseja copiar apenas dados parciais de uma tabela para uma nova tabela, ou seja, algumas linhas, mas não todas, você pode usar a condição WHERE em sua instrução SELECT, conforme mostrado
CREATE TABLE new_table 
SELECT column1, column2, column3 
FROM
    existing_table
WHERE
    conditions;

Aqui está a consulta SQL para copiar dados parciais de product_list tabela em uma nova tabela chamada 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 |
+------------+--------------+-------+

Bônus de leitura:Como adicionar restrição padrão no MySQL


MySQL Copiar Estrutura da Tabela para Nova Tabela


As consultas SQL acima apenas copiam a tabela e os dados. Eles não copiarão objetos de tabela, como chave primária, índices, restrições, gatilhos. Para copiar a estrutura e os dados da tabela, você precisa usar a instrução CREATE TABLE com a palavra-chave LIKE, conforme mostrado abaixo
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;

Digamos que você tenha um pedidos tabela com chave primária (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 você deseja copiar a estrutura de pedidos para new_orders tabela. Aqui está a consulta SQL para copiar a estrutura da tabela para a nova tabela.
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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

Como você pode ver, a tabela new_orders também possui um campo de chave primária id. A instrução acima apenas copiará a estrutura da tabela, mas não os dados. Você precisa copiar os dados separadamente, conforme mostrado na próxima seção.

Bônus de leitura:MySQL selecione as N linhas principais por grupo


MySQL Copiar dados de uma tabela para uma tabela existente


A instrução acima criará uma nova tabela com a estrutura da tabela antiga, mas será uma tabela vazia. Então você precisa usar a instrução INSERT para copiar dados da tabela antiga para a nova tabela.
INSERT new_table
SELECT * FROM existing_table;

Aqui está a consulta SQL para copiar dados de pedidos para a tabela existente 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 |
+----+--------------+------------+-------+-------------+---------------------+

Bônus de leitura:MySQL Copy Database


Copiar tabela MySQL de um banco de dados para outro


Se você deseja duplicar a tabela no MySQL do banco de dados para outro, basta incluir os nomes do banco de dados nos nomes das tabelas enquanto usa as consultas SQL acima, conforme mostrado abaixo em negrito
CREATE TABLE destination_db.new_table 
LIKE source_db.existing_table;

INSERT destination_db.new_table 
SELECT *
FROM source_db.existing_table;

A primeira instrução SQL acima duplicará a estrutura da tabela no MySQL do banco de dados de origem (por exemplo, source_db ) para outro (por exemplo, destination_db ). A segunda instrução copiará os dados de uma tabela para outra.

Substitua source_db e destination_db nas consultas acima com bancos de dados de origem e destino, respectivamente.



Espero que este artigo o ajude a copiar a tabela no MySQL. Por favor, tenha cuidado ao copiar tabelas no MySQL, com grande número de registros, pois pode levar muito tempo e recursos.



A Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!