sql >> Database >  >> RDS >> Mysql

Tabel kopiëren in MySQL

Soms moet u de tabel in MySQL kopiëren. Er zijn veel verschillende manieren om een ​​tabel in MySQL te kopiëren. Hier zijn de stappen om de tabel in MySQL te kopiëren. U kunt ze gebruiken om een ​​tabel naar een andere tabel te kopiëren, een tabel van de ene database naar een andere te kopiëren, een tabelstructuur te kopiëren, een tabel met gegevens te kopiëren, een tabelstructuur met index te kopiëren of een tabel van de ene server naar de andere te kopiëren.

Hoe een tabel in MySQL te kopiëren

Hier leest u hoe u een tabel in MySQL kopieert. Er zijn verschillende gebruiksscenario's om de tabel in MySQL te kopiëren. We zullen ze allemaal in detail bekijken.

MySQL Kopieer gegevens van de ene tabel naar een nieuwe tabel

Meestal moet u de tabel in MySQL naar een nieuwe tabel kopiëren. In dit geval moet u de CREATE TABLE- en SELECT-instructie gebruiken, zoals hieronder weergegeven

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

In de bovenstaande query moet u de namen van de bestaande tabel opgeven, samen met de kolommen die u wilt kopiëren, en ook de naam van de nieuwe tabel. MySQL zal uw nieuwe tabel vullen met het resultaat van uw SELECT-instructie.

Stel dat u een bestaande tabel heeft product_list

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

Hier is de SQL-query om product_list te kopiëren tabel in nieuwe tabel genaamd 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 |
+------------+--------------------+-------+

Houd er rekening mee dat de nieuwe tabel alleen wordt gemaakt als deze niet bestaat. Anders krijg je een foutmelding. Om te voorkomen dat u een foutmelding krijgt wanneer u een tabel dupliceert in MySQL, kunt u de IF NOT EXIST-clausule gebruiken in de CREATE TABLE-instructie, zoals hieronder weergegeven.

mysql> create table if not exist new_product_list
       select *
       from product_list;

Bonus Lezen:Hoe voeg ik een NOT NULL-beperking toe in MySQL

Als u slechts gedeeltelijke gegevens van de ene tabel naar de nieuwe tabel wilt kopiëren, dat wil zeggen enkele rijen, maar niet alle, kunt u de WHERE-voorwaarde in uw SELECT-instructie gebruiken, zoals weergegeven

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

Hier is de SQL-query om gedeeltelijke gegevens te kopiëren van product_list tabel in nieuwe tabel genaamd 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 lezen:standaardbeperking toevoegen in MySQL

MySQL kopieer tabelstructuur naar nieuwe tabel

De bovenstaande SQL-query's kopiëren alleen tabel en gegevens. Ze zullen geen tabelobjecten kopiëren, zoals primaire sleutel, indexen, beperkingen, triggers. Om de tabelstructuur en gegevens te kopiëren, moet u de instructie CREATE TABLE gebruiken met het LIKE-sleutelwoord, zoals hieronder weergegeven

CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;

Stel dat u een bestellingen . heeft tabel met primaire sleutel (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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

en u wilt de structuur van orders kopiëren naar nieuwe_orders tafel. Hier is de SQL-query om de tabelstructuur naar een nieuwe tabel te kopiëren.

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

Zoals u kunt zien, heeft de tabel new_orders ook een primair sleutelveld id. De bovenstaande instructie kopieert alleen de tabelstructuur, maar geen gegevens. U moet de gegevens afzonderlijk kopiëren, zoals weergegeven in het volgende gedeelte.

Bonus Lezen:MySQL Selecteer Top N Rijen Per Groep

MySQL gegevens kopiëren van de ene tabel naar de bestaande tabel

De bovenstaande instructie zal een nieuwe tabel maken met de structuur van de oude tabel, maar het zal een lege tabel zijn. Dan moet u de INSERT-instructie gebruiken om gegevens van de oude tabel naar de nieuwe tabel te kopiëren.

INSERT new_table
SELECT * FROM existing_table;

Hier is de SQL-query om gegevens uit orders te kopiëren naar bestaande tabel 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 Lezen:MySQL Copy Database

MySQL-tabel kopiëren van de ene database naar de andere

Als u een tabel in MySQL van database naar een andere wilt dupliceren, neem dan gewoon de databasenamen op in uw tabelnamen terwijl u de bovenstaande SQL-query's gebruikt, zoals hieronder vetgedrukt weergegeven

CREATE TABLE destination_db.new_table 
LIKE source_db.existing_table;

INSERT destination_db.new_table 
SELECT *
FROM source_db.existing_table;

De eerste SQL-instructie hierboven zal de tabelstructuur in MySQL dupliceren vanuit de brondatabase (bijv. source_db ) naar een ander (bijv. destination_db ). De tweede instructie kopieert gegevens van de ene tabel naar de andere.

Vervang source_db en destination_db in bovenstaande zoekopdrachten met respectievelijk bron- en bestemmingsdatabases.

Hopelijk helpt dit artikel je bij het kopiëren van de tabel in MySQL. Wees voorzichtig wanneer u een tabel kopieert in MySQL, met een groot aantal records, aangezien dit veel tijd en middelen kan kosten.

Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. PARTITIE DOOR met en zonder KEEP in Oracle

  2. Hoe unicode op te slaan in MySQL?

  3. Verwijder zeer grote databases

  4. MICROSECONDE() Voorbeeld – MySQL