sql >> Database teknologi >  >> RDS >> Mysql

Sådan duplikeres tabel i MySQL

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!

  1. Hvordan frigøres mulige Postgres rækkelåse?

  2. Liste og skifte databaser i PostgreSQL

  3. Hvordan søger man efter skråstreg (\) i MySQL? og hvorfor escape (\) ikke påkrævet for hvor (=), men for Like er påkrævet?

  4. Hvilken SQL-forespørgsel er hurtigere? Filtrer på Tilmeldingskriterier eller Hvor-klausul?