Nogle gange skal du muligvis kopiere data fra en tabel til en anden i MySQL eller kopiere tabeller i MySQL. Her er, hvordan du dublerer tabel i MySQL. Du kan bruge den til at klone tabel i MySQL eller kopiere tabelstruktur, eller endda kopiere tabel fra en database til en anden.
Sådan duplikeres tabel i MySQL
Her er trinene til at duplikere tabel i MySQL. Der er forskellige use cases til at kopiere data fra en tabel til en anden. Vi vil se nærmere på hver af dem.
MySQL Kopier data fra én tabel til en ny tabel
Hvis du skal duplikere tabel i MySQL til en ny tabel, skal du bruge CREATE TABLE og SELECT-sætningen som vist nedenfor
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Lad os sige, at du har en eksisterende tabel produkter
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Her er SQL-forespørgslen til at kopiere produkter tabel til ny tabel kaldet nye_produkter
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 | +------------+--------------------+-------+
Det er vigtigt at bemærke, at den nye tabel kun oprettes, hvis den ikke eksisterer. Ellers får du en fejl. For at undgå at få en fejl, når du dublerer tabel i MySQL, kan du bruge IF NOT EXIST i CREATE TABLE-sætningen, som vist nedenfor.
mysql> create table if not exist new_products select * from products;
Bonuslæsning:MySQL-lagret procedure med parametre
For kun at kopiere delvise data fra en tabel til en ny tabel, kan du bruge WHERE-betingelsen i din SELECT-sætning som vist
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Her er SQL-forespørgslen til at kopiere delvise data fra produkter tabel til ny tabel kaldet nye_produkter2
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 Læs:Sådan opretter du sammensat primær nøgle i MySQL
MySQL Kopier tabelstruktur til ny tabel
Ovenstående forespørgsler kopierer kun tabel og data. De kopierer ikke tabelobjekter såsom primær nøgle, indekser, begrænsninger, triggere. For at kopiere tabelstruktur og data skal du bruge CREATE TABLE-sætning med LIKE nøgleord som vist nedenfor
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Lad os sige, at du har en ordrer tabel med primær nøgle
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 | | +--------------+--------------+------+-----+-------------------+----------------+
og du vil kopiere strukturen af ordrer til nye_ordrer bord. Her er SQL-forespørgslen for at kopiere tabelstruktur til ny tabel.
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 Læs:Sådan afkortes tabel i MySQL
MySQL Kopier data fra én tabel til eksisterende tabel
Ovenstående erklæring vil skabe en ny tabel med strukturen af den gamle tabel. Så skal du bruge INSERT-sætningen til at kopiere data fra gammel tabel til ny tabel.
INSERT new_table SELECT * FROM existing_table;
Her er SQL-forespørgslen til at kopiere data fra ordrer til eksisterende tabel nye_ordrer
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 Læs:MySQL DROP VIEW
MySQL Kopier tabel fra en database til en anden
Hvis du vil duplikere tabel i MySQL fra database til en anden, skal du blot inkludere databasenavnene i dine tabelnavne, som vist nedenfor med fed skrift
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
Den første sætning vil duplikere tabelstrukturen i MySQL fra kildedatabasen (f.eks. source_db) til en anden (f.eks. destination_db). Den anden sætning vil kopiere data fra en tabel til en anden.
Erstat source_db og destination_db i ovenstående forespørgsler med henholdsvis kilde- og destinationsdatabaser.
Forhåbentlig hjælper denne artikel dig med at duplikere tabel i MySQL. Vær forsigtig, når du dublerer tabel i MySQL, med et stort antal poster, da det kan tage meget tid og ressourcer.
Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!