Ibland kan du behöva kopiera tabellen i MySQL. Det finns många olika sätt att kopiera tabeller i MySQL. Här är stegen för att kopiera tabell i MySQL. Du kan använda dem för att kopiera tabell till en annan tabell, kopiera tabell från en databas till en annan, kopiera tabellstruktur, kopiera tabell med data, kopiera tabellstruktur med index eller kopiera tabell från en server till en annan.
Hur man kopierar tabell i MySQL
Så här kopierar du tabell i MySQL. Det finns olika användningsfall för att kopiera tabeller i MySQL. Vi kommer att titta på var och en av dem i detalj.
MySQL Kopiera data från en tabell till en ny tabell
Vanligtvis måste du kopiera tabell i MySQL till en ny tabell. I det här fallet måste du använda CREATE TABLE och SELECT-satsen som visas nedan
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
I ovanstående fråga måste du ange namn på befintlig tabell tillsammans med kolumnerna som du vill kopiera, och även nytt tabellnamn. MySQL kommer att fylla i din nya tabell med resultatet av din SELECT-sats.
Låt oss säga att du har en befintlig tabell produktlista
mysql> select * from product_list; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Här är SQL-frågan för att kopiera produktlista tabell till ny tabell som heter ny_produktlista
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 | +------------+--------------------+-------+
Observera att den nya tabellen endast skapas om den inte finns. Annars får du ett felmeddelande. För att undvika att få ett felmeddelande när du duplicerar tabell i MySQL, kan du använda IF NOT EXIST-satsen i CREATE TABLE-satsen, som visas nedan.
mysql> create table if not exist new_product_list select * from product_list;
Bonus Läs:Hur man lägger till NOT NULL-begränsning i MySQL
Om du bara vill kopiera delar av data från en tabell till en ny tabell, det vill säga vissa rader men inte alla, kan du använda WHERE-villkoret i din SELECT-sats som visas
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Här är SQL-frågan för att kopiera delar av data från produktlista tabell till ny tabell som heter nya_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äsning:Hur man lägger till standardbegränsning i MySQL
MySQL Kopiera tabellstruktur till ny tabell
Ovanstående SQL-frågor kopierar endast tabell och data. De kommer inte att kopiera tabellobjekt som primärnyckel, index, begränsningar, utlösare. För att kopiera tabellstruktur och data måste du använda CREATE TABLE-satsen med nyckelordet LIKE, som visas nedan
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Låt oss säga att du har en order tabell med primärnyckel (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 | | +--------------+--------------+------+-----+-------------------+----------------+
och du vill kopiera strukturen för order till nya_order tabell. Här är SQL-frågan för att kopiera tabellstrukturen till en ny tabell.
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 också ett primärnyckelfält id. Ovanstående uttalande kommer bara att kopiera tabellstruktur men inte data. Du måste kopiera data separat, som visas i nästa avsnitt.
Bonusläsning:MySQL Välj Top N rader per grupp
MySQL Kopiera data från en tabell till befintlig tabell
Ovanstående uttalande kommer att skapa en ny tabell med strukturen för den gamla tabellen, men det kommer att vara en tom tabell. Sedan måste du använda INSERT-satsen för att kopiera data från gammal tabell till ny tabell.
INSERT new_table SELECT * FROM existing_table;
Här är SQL-frågan för att kopiera data från order till befintlig tabell nya_order
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 Kopiera tabell från en databas till en annan
Om du vill duplicera tabell i MySQL från databas till en annan, inkludera bara databasnamnen i dina tabellnamn medan du använder ovanstående SQL-frågor, som visas nedan i fetstil
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
Den första SQL-satsen ovan kommer att duplicera tabellstrukturen i MySQL från källdatabasen (t.ex. källa_db ) till en annan (t.ex. destination_db ). Den andra satsen kopierar data från en tabell till en annan.
Ersätt source_db och destination_db i ovanstående frågor med käll- respektive destinationsdatabaser.
Förhoppningsvis hjälper den här artikeln dig att kopiera tabellen i MySQL. Var försiktig när du kopierar tabell i MySQL, med ett stort antal poster, eftersom det kan ta mycket tid och resurser.
Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!