sql >> Databasteknik >  >> RDS >> Mysql

Hur man duplicerar tabell i MySQL

Ibland kan du behöva kopiera data från en tabell till en annan i MySQL eller kopiera tabeller i MySQL. Så här duplicerar du en tabell i MySQL. Du kan använda den för att klona tabeller i MySQL eller kopiera tabellstruktur, eller till och med kopiera tabell från en databas till en annan.

Hur man duplicerar tabell i MySQL

Här är stegen för att duplicera tabeller i MySQL. Det finns olika användningsfall för att kopiera data från en tabell till en annan. Vi kommer att titta på var och en av dem i detalj.

MySQL Kopiera data från en tabell till en ny tabell

Om du behöver duplicera tabell i MySQL till en ny tabell, måste du använda CREATE TABLE och SELECT-satsen som visas nedan

CREATE TABLE new_table 
SELECT column, column2, column3 
FROM
    existing_table;

Låt oss säga att du har en befintlig tabell produkter

mysql> select * from products;
+------------+--------------------+-------+
| product_id | product_name       | price |
+------------+--------------------+-------+
|          1 | iPhone 11          |   400 |
|          2 | Samsung Galaxy A50 |   250 |
+------------+--------------------+-------+

Här är SQL-frågan för att kopiera produkter tabell till ny tabell som heter nya_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 är viktigt att notera att den nya tabellen skapas endast 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 i CREATE TABLE-satsen, som visas nedan.

mysql> create table if not exist new_products
       select *
       from products;

Bonus Läs:MySQL lagrad procedur med parametrar

För att kopiera endast partiella data från en tabell till en ny tabell 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 produkter tabell till ny tabell som heter nya_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:Hur man skapar en sammansatt primär nyckel i MySQL

MySQL Kopiera tabellstruktur till ny tabell

Ovanstående 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

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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

Bonus Läs:Hur man trunkerar tabell i MySQL

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. 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 DROP VIEW

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, 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 satsen kommer att duplicera tabellstrukturen i MySQL från källdatabas (t.ex. source_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 duplicera tabellen i MySQL. Var försiktig när du duplicerar tabeller 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!

  1. Hur använder man bilder i Android SQLite som är större än begränsningarna för ett CursorWindow?

  2. Min Välj SUM-fråga returnerar null. Det bör returnera 0

  3. Lär känna din SQL Server-arbetsbelastning

  4. FEL 1067 (42000):Ogiltigt standardvärde för 'created_at'