Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So kopieren Sie eine Tabelle in MySQL

Manchmal müssen Sie möglicherweise Tabellen in MySQL kopieren. Es gibt viele verschiedene Möglichkeiten, Tabellen in MySQL zu kopieren. Hier sind die Schritte zum Kopieren der Tabelle in MySQL. Sie können sie verwenden, um eine Tabelle in eine andere Tabelle zu kopieren, eine Tabelle von einer Datenbank in eine andere zu kopieren, eine Tabellenstruktur zu kopieren, eine Tabelle mit Daten zu kopieren, eine Tabellenstruktur mit Index zu kopieren oder eine Tabelle von einem Server auf einen anderen zu kopieren.

Wie man Tabellen in MySQL kopiert

So kopieren Sie eine Tabelle in MySQL. Es gibt verschiedene Anwendungsfälle zum Kopieren von Tabellen in MySQL. Wir werden uns jeden von ihnen im Detail ansehen.

MySQL Daten von einer Tabelle in eine neue Tabelle kopieren

Normalerweise müssen Sie eine Tabelle in MySQL in eine neue Tabelle kopieren. In diesem Fall müssen Sie die CREATE TABLE- und SELECT-Anweisung wie unten gezeigt verwenden

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

In der obigen Abfrage müssen Sie die Namen der vorhandenen Tabelle zusammen mit den Spalten, die Sie kopieren möchten, sowie den neuen Tabellennamen angeben. MySQL füllt Ihre neue Tabelle mit dem Ergebnis Ihrer SELECT-Anweisung.

Angenommen, Sie haben eine vorhandene Tabelle product_list

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

Hier ist die SQL-Abfrage zum Kopieren von product_list Tabelle in eine neue Tabelle namens new_product_list

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

Bitte beachten Sie, dass die neue Tabelle nur erstellt wird, wenn sie nicht existiert. Andernfalls erhalten Sie einen Fehler. Um Fehler beim Duplizieren von Tabellen in MySQL zu vermeiden, können Sie die IF NOT EXIST-Klausel in der CREATE TABLE-Anweisung verwenden, wie unten gezeigt.

mysql> create table if not exist new_product_list
       select *
       from product_list;

Bonus-Leseartikel:Wie man NOT NULL-Einschränkungen in MySQL hinzufügt

Wenn Sie nur Teildaten von einer Tabelle in eine neue Tabelle kopieren möchten, also einige Zeilen, aber nicht alle, können Sie die WHERE-Bedingung wie gezeigt in Ihrer SELECT-Anweisung verwenden

CREATE TABLE new_table 
SELECT column1, column2, column3 
FROM
    existing_table
WHERE
    conditions;

Hier ist die SQL-Abfrage zum Kopieren von Teildaten aus product_list Tabelle in eine neue Tabelle namens new_products2

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

Bonuslektüre:So fügen Sie eine Standardeinschränkung in MySQL hinzu

MySQL Tabellenstruktur in neue Tabelle kopieren

Die obigen SQL-Abfragen kopieren nur Tabelle und Daten. Sie kopieren keine Tabellenobjekte wie Primärschlüssel, Indizes, Einschränkungen, Trigger. Um die Tabellenstruktur und Daten zu kopieren, müssen Sie die CREATE TABLE-Anweisung mit dem Schlüsselwort LIKE verwenden, wie unten gezeigt

CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;

Angenommen, Sie haben eine Bestellung Tabelle mit Primärschlüssel (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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

und Sie möchten die Struktur von Aufträgen kopieren zu new_orders Tisch. Hier ist die SQL-Abfrage zum Kopieren der Tabellenstruktur in eine neue Tabelle.

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

Wie Sie sehen können, hat die Tabelle new_orders auch ein Primärschlüsselfeld id. Die obige Anweisung kopiert nur die Tabellenstruktur, aber keine Daten. Sie müssen die Daten separat kopieren, wie im nächsten Abschnitt gezeigt.

Bonus-Lesetext:MySQL wählt die obersten N Zeilen pro Gruppe aus

MySQL kopiert Daten von einer Tabelle in eine bestehende Tabelle

Die obige Anweisung erstellt eine neue Tabelle mit der Struktur der alten Tabelle, aber es wird eine leere Tabelle sein. Dann müssen Sie die INSERT-Anweisung verwenden, um Daten aus der alten Tabelle in die neue Tabelle zu kopieren.

INSERT new_table
SELECT * FROM existing_table;

Hier ist die SQL-Abfrage zum Kopieren von Daten aus Bestellungen in die bestehende Tabelle new_orders

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-Lesetext:MySQL-Kopierdatenbank

MySQL Tabelle von einer Datenbank in eine andere kopieren

Wenn Sie eine Tabelle in MySQL von einer Datenbank in eine andere duplizieren möchten, fügen Sie einfach die Datenbanknamen in Ihre Tabellennamen ein, während Sie die obigen SQL-Abfragen verwenden, wie unten in Fettdruck gezeigt

CREATE TABLE destination_db.new_table 
LIKE source_db.existing_table;

INSERT destination_db.new_table 
SELECT *
FROM source_db.existing_table;

Die erste SQL-Anweisung oben dupliziert die Tabellenstruktur in MySQL aus der Quelldatenbank (z. B. source_db ) zu einer anderen (z. B. destination_db ). Die zweite Anweisung kopiert Daten von einer Tabelle in eine andere.

Ersetzen Sie source_db und destination_db in obigen Abfragen jeweils mit Quell- und Zieldatenbank.

Hoffentlich hilft Ihnen dieser Artikel beim Kopieren von Tabellen in MySQL. Bitte seien Sie vorsichtig, wenn Sie eine Tabelle in MySQL mit einer großen Anzahl von Datensätzen kopieren, da dies viel Zeit und Ressourcen in Anspruch nehmen kann.

Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!