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

So duplizieren Sie eine Tabelle in MySQL

Manchmal müssen Sie möglicherweise Daten von einer Tabelle in eine andere in MySQL kopieren oder Tabellen in MySQL kopieren. So duplizieren Sie eine Tabelle in MySQL. Sie können damit Tabellen in MySQL klonen oder Tabellenstrukturen kopieren oder sogar Tabellen von einer Datenbank in eine andere kopieren.

Wie man Tabellen in MySQL dupliziert

Hier sind die Schritte zum Duplizieren einer Tabelle in MySQL. Es gibt verschiedene Anwendungsfälle, um Daten von einer Tabelle in eine andere zu kopieren. Wir werden uns jeden von ihnen im Detail ansehen.

MySQL Daten von einer Tabelle in eine neue Tabelle kopieren

Wenn Sie eine Tabelle in MySQL in eine neue Tabelle duplizieren müssen, müssen Sie die CREATE TABLE- und SELECT-Anweisung wie unten gezeigt verwenden

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

Angenommen, Sie haben eine vorhandene Tabelle Produkte

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

Hier ist die SQL-Abfrage zum Kopieren von Produkten Tabelle in eine neue Tabelle namens new_products

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

Es ist wichtig zu beachten, 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 IF NOT EXIST in der CREATE TABLE-Anweisung verwenden, wie unten gezeigt.

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

Bonus-Lesevorgang:Gespeicherte MySQL-Prozedur mit Parametern

Um nur Teildaten von einer Tabelle in eine neue Tabelle zu kopieren, können Sie die WHERE-Bedingung in Ihrer SELECT-Anweisung wie gezeigt verwenden

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

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

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

Bonuslektüre:So erstellen Sie einen zusammengesetzten Primärschlüssel in MySQL

MySQL Tabellenstruktur in neue Tabelle kopieren

Die obigen Abfragen kopieren nur Tabellen 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

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

Bonus-Lesetext:Wie man Tabellen in MySQL abschneidet

MySQL kopiert Daten von einer Tabelle in eine bestehende Tabelle

Die obige Anweisung erstellt eine neue Tabelle mit der Struktur der alten Tabelle. 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 |
+----+--------------+------------+-------+-------------+---------------------+

Bonuslektüre:MySQL DROP VIEW

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, 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 Anweisung dupliziert die Tabellenstruktur in MySQL von der Quelldatenbank (z. B. source_db) in eine andere (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 Duplizieren von Tabellen in MySQL. Bitte seien Sie vorsichtig, wenn Sie Tabellen in MySQL mit einer großen Anzahl von Datensätzen duplizieren, 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!