Nogle gange skal du muligvis kopiere tabel i MySQL. Der er mange forskellige måder at kopiere tabel i MySQL. Her er trinene til at kopiere tabel i MySQL. Du kan bruge dem til at kopiere tabel til en anden tabel, kopiere tabel fra en database til en anden, kopiere tabelstruktur, kopiere tabel med data, kopiere tabelstruktur med indeks eller kopiere tabel fra en server til en anden.
Sådan kopierer man tabel i MySQL
Sådan kopierer du tabel i MySQL. Der er forskellige use cases til at kopiere tabel i MySQL. Vi vil se nærmere på hver af dem.
MySQL Kopier data fra én tabel til en ny tabel
Typisk skal du kopiere tabel i MySQL til en ny tabel. I dette tilfælde skal du bruge CREATE TABLE og SELECT-sætningen som vist nedenfor
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
I ovenstående forespørgsel skal du angive navnene på eksisterende tabel sammen med de kolonner, du vil kopiere, og også et nyt tabelnavn. MySQL vil udfylde din nye tabel med resultatet af din SELECT-sætning.
Lad os sige, at du har en eksisterende tabel product_list
mysql> select * from product_list; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Her er SQL-forespørgslen til at kopiere produktliste tabel til ny tabel kaldet ny_produktliste
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 | +------------+--------------------+-------+
Bemærk, 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-sætningen i CREATE TABLE-sætningen, som vist nedenfor.
mysql> create table if not exist new_product_list select * from product_list;
Bonus Læs:Sådan tilføjes NOT NULL-begrænsning i MySQL
Hvis du kun vil kopiere delvise data fra en tabel til en ny tabel, det vil sige nogle rækker, men ikke alle, 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 produktliste tabel til ny tabel kaldet nye_produkter2
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 | +------------+--------------+-------+
Bonuslæser:Sådan tilføjer du standardbegrænsning i MySQL
MySQL Kopier tabelstruktur til ny tabel
Ovenstående SQL-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 (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 | | +--------------+--------------+------+-----+-------------------+----------------+
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Som du kan se, har tabellen new_orders også et primært nøglefelt id. Ovenstående erklæring kopierer kun tabelstruktur, men ikke data. Du skal separat kopiere data, som vist i næste afsnit.
Bonus Læs:MySQL Vælg Top N rækker pr. gruppe
MySQL Kopier data fra én tabel til eksisterende tabel
Ovenstående erklæring vil skabe en ny tabel med strukturen af den gamle tabel, men det vil være en tom 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 Copy Database
MySQL Kopier tabel fra én database til en anden
Hvis du vil duplikere tabel i MySQL fra database til en anden, skal du blot inkludere databasenavnene i dine tabelnavne, mens du bruger ovenstående SQL-forespørgsler, 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 SQL-sætning ovenfor vil duplikere tabelstrukturen i MySQL fra kildedatabasen (f.eks. kilde_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 kopiere tabel i MySQL. Vær forsigtig, når du kopierer 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!