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!