Czasami może być konieczne skopiowanie danych z jednej tabeli do drugiej w MySQL lub skopiowanie tabel w MySQL. Oto jak zduplikować tabelę w MySQL. Możesz go użyć do klonowania tabeli w MySQL lub kopiowania struktury tabeli, a nawet kopiowania tabeli z jednej bazy danych do drugiej.
Jak powielić tabelę w MySQL
Oto kroki do zduplikowania tabeli w MySQL. Istnieją różne przypadki użycia do kopiowania danych z jednej tabeli do drugiej. Przyjrzymy się każdemu z nich szczegółowo.
MySQL Kopiuj dane z jednej tabeli do nowej
Jeśli chcesz zduplikować tabelę w MySQL do nowej tabeli, musisz użyć instrukcji CREATE TABLE i SELECT, jak pokazano poniżej
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Załóżmy, że masz już tabelę produkty
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Oto zapytanie SQL do skopiowania produktów tabeli do nowej tabeli o nazwie 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 | +------------+--------------------+-------+
Należy pamiętać, że nowa tabela zostanie utworzona tylko wtedy, gdy nie istnieje. W przeciwnym razie otrzymasz błąd. Aby uniknąć błędu podczas duplikowania tabeli w MySQL, możesz użyć IF NOT EXIST w instrukcji CREATE TABLE, jak pokazano poniżej.
mysql> create table if not exist new_products select * from products;
Przeczytaj bonus:Procedura przechowywana MySQL z parametrami
Aby skopiować tylko częściowe dane z jednej tabeli do nowej, możesz użyć warunku WHERE w instrukcji SELECT, jak pokazano
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Oto zapytanie SQL służące do kopiowania częściowych danych z produktów tabeli do nowej tabeli o nazwie 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 | +------------+--------------+-------+
Przeczytaj bonus:Jak utworzyć złożony klucz podstawowy w MySQL
MySQL Kopiuj strukturę tabeli do nowej tabeli
Powyższe zapytania kopiują tylko tabelę i dane. Nie będą kopiować obiektów tabeli, takich jak klucz podstawowy, indeksy, ograniczenia, wyzwalacze. Aby skopiować strukturę i dane tabeli, musisz użyć instrukcji CREATE TABLE ze słowem kluczowym LIKE, jak pokazano poniżej
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Załóżmy, że masz zamówienia tabela z kluczem podstawowym
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 | | +--------------+--------------+------+-----+-------------------+----------------+
i chcesz skopiować strukturę zamówień do nowych_zamówień stół. Oto zapytanie SQL do skopiowania struktury tabeli do nowej tabeli.
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Przeczytaj bonus:Jak przyciąć tabelę w MySQL
MySQL Kopiuj dane z jednej tabeli do istniejącej
Powyższe stwierdzenie utworzy nową tabelę ze strukturą starej tabeli. Następnie musisz użyć instrukcji INSERT, aby skopiować dane ze starej tabeli do nowej.
INSERT new_table SELECT * FROM existing_table;
Oto zapytanie SQL do kopiowania danych z zamówień do istniejącej tabeli 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 | +----+--------------+------------+-------+-------------+---------------------+
Przeczytaj bonus:MySQL DROP VIEW
MySQL Kopiuj tabelę z jednej bazy danych do drugiej
Jeśli chcesz zduplikować tabelę w MySQL z bazy danych do innej, po prostu uwzględnij nazwy baz danych w nazwach tabel, jak pokazano poniżej pogrubioną czcionką
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
Pierwsza instrukcja powieli strukturę tabeli w MySQL ze źródłowej bazy danych (np. source_db) do innej (np. destination_db). Druga instrukcja skopiuje dane z jednej tabeli do drugiej.
Zastąp source_db i destination_db w powyższych zapytaniach z odpowiednio źródłowymi i docelowymi bazami danych.
Mamy nadzieję, że ten artykuł pomoże ci zduplikować tabelę w MySQL. Zachowaj ostrożność podczas duplikowania tabeli w MySQL z dużą liczbą rekordów, ponieważ może to zająć dużo czasu i zasobów.
Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!