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!