Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak skopiować tabelę w MySQL

Czasami może być konieczne skopiowanie tabeli w MySQL. Istnieje wiele różnych sposobów kopiowania tabeli w MySQL. Oto kroki, aby skopiować tabelę w MySQL. Możesz ich użyć do kopiowania tabeli do innej tabeli, kopiowania tabeli z jednej bazy danych do drugiej, kopiowania struktury tabeli, kopiowania tabeli z danymi, kopiowania struktury tabeli z indeksem lub kopiowania tabeli z jednego serwera na drugi.

Jak skopiować tabelę do MySQL

Oto jak skopiować tabelę w MySQL. Istnieją różne przypadki użycia do kopiowania tabeli w MySQL. Przyjrzymy się każdemu z nich szczegółowo.

MySQL Kopiuj dane z jednej tabeli do nowej

Zazwyczaj musisz skopiować tabelę z MySQL do nowej tabeli. W takim przypadku musisz użyć instrukcji CREATE TABLE i SELECT, jak pokazano poniżej

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

W powyższym zapytaniu musisz podać nazwy istniejącej tabeli wraz z kolumnami, które chcesz skopiować, a także nazwę nowej tabeli. MySQL wypełni Twoją nową tabelę wynikami instrukcji SELECT.

Załóżmy, że masz już tabelę product_list

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

Oto zapytanie SQL do skopiowania product_list tabeli do nowej tabeli o nazwie 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 |
+------------+--------------------+-------+

Pamiętaj, ż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ć klauzuli IF NOT EXIST w instrukcji CREATE TABLE, jak pokazano poniżej.

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

Przeczytaj bonus:Jak dodać ograniczenie NOT NULL w MySQL

Jeśli chcesz skopiować tylko częściowe dane z jednej tabeli do nowej tabeli, to znaczy niektóre wiersze, ale nie wszystkie, 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 skopiowania częściowych danych z product_list tabeli do nowej tabeli o nazwie 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 |
+------------+--------------+-------+

Przeczytaj bonus:Jak dodać domyślne ograniczenie w MySQL

MySQL Kopiuj strukturę tabeli do nowej tabeli

Powyższe zapytania SQL 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 (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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

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

Jak widać, tabela new_orders ma również pole klucza podstawowego id. Powyższa instrukcja skopiuje tylko strukturę tabeli, ale nie dane. Musisz oddzielnie skopiować dane, jak pokazano w następnej sekcji.

Przeczytaj bonus:MySQL wybierz N pierwszych wierszy na grupę

MySQL Kopiuj dane z jednej tabeli do istniejącej

Powyższa instrukcja utworzy nową tabelę ze strukturą starej tabeli, ale będzie to pusta tabela. 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:baza danych kopii MySQL

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 podczas korzystania z powyższych zapytań SQL, 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 SQL powyżej powieli strukturę tabeli w MySQL ze źródłowej bazy danych (np. source_db ) do innego (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 skopiować tabelę w MySQL. Zachowaj ostrożność podczas kopiowania 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ś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak napisać procedurę składowaną za pomocą phpmyadmina i jak z niej korzystać za pośrednictwem php?

  2. Schemat eksportu MySql bez danych

  3. Funkcja MySQL POW() – podnieś wartość do potęgi innej wartości

  4. MySQL REPLACE() – zamień wszystkie wystąpienia podciągu na inny ciąg

  5. Jak połączyć się z bazą danych MySQL lub MariaDB