sql >> Database >  >> RDS >> Mysql

Tabel dupliceren in MySQL

Soms moet u gegevens van de ene tabel naar de andere kopiëren in MySQL of tabellen kopiëren in MySQL. Hier leest u hoe u een tabel dupliceert in MySQL. Je kunt het gebruiken om een ​​tabel in MySQL te klonen of om de tabelstructuur te kopiëren, of zelfs om een ​​tabel van de ene database naar de andere te kopiëren.

Hoe een tabel in MySQL dupliceren

Hier zijn de stappen om een ​​tabel in MySQL te dupliceren. Er zijn verschillende gebruiksscenario's om gegevens van de ene tabel naar de andere te kopiëren. We zullen ze allemaal in detail bekijken.

MySQL Kopieer gegevens van de ene tabel naar een nieuwe tabel

Als u een tabel in MySQL naar een nieuwe tabel moet dupliceren, moet u de CREATE TABLE- en SELECT-instructie gebruiken, zoals hieronder weergegeven

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

Stel dat u een bestaande tabel producten . heeft

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

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

Het is belangrijk op te merken 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 IF NOT EXIST gebruiken in de instructie CREATE TABLE, zoals hieronder weergegeven.

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

Bonus lezen:MySQL opgeslagen procedure met parameters

Om slechts gedeeltelijke gegevens van de ene tabel naar de nieuwe tabel te kopiëren, 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 van producten te kopiëren tabel in nieuwe tabel genaamd 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 lezen:Samengestelde primaire sleutel maken in MySQL

MySQL kopieer tabelstructuur naar nieuwe tabel

De bovenstaande 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

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

Bonus Lezen:Tabel in MySQL afkappen

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

De bovenstaande verklaring zal een nieuwe tabel maken met de structuur van de oude tabel. 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 DROP VIEW

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, 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 instructie zal de tabelstructuur in MySQL dupliceren van de brondatabase (bijv. source_db) naar een andere (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 dupliceren van een tabel in MySQL. Wees voorzichtig wanneer u een tabel dupliceert 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. SQL Server - Beste manier om de identiteit van de ingevoegde rij te krijgen?

  2. Hoe u alle beperkingen van CHECK en externe sleutels in een database in SQL Server uitschakelt (T-SQL-voorbeelden)

  3. Fix "Rekenkundige overloopfout bij het converteren van int naar gegevenstype numeriek" in SQL Server

  4. datetime2 vs datetimeoffset in SQL Server:wat is het verschil?