sql >> Databáze >  >> RDS >> Mysql

Jak duplikovat tabulku v MySQL

Někdy můžete potřebovat zkopírovat data z jedné tabulky do druhé v MySQL nebo zkopírovat tabulky v MySQL. Zde je návod, jak duplikovat tabulku v MySQL. Můžete jej použít ke klonování tabulky v MySQL nebo kopírování struktury tabulky, nebo dokonce kopírování tabulky z jedné databáze do druhé.

Jak duplikovat tabulku v MySQL

Zde jsou kroky k duplikování tabulky v MySQL. Existují různé případy použití pro kopírování dat z jedné tabulky do druhé. Na každý z nich se podíváme podrobně.

MySQL Kopírování dat z jedné tabulky do nové tabulky

Pokud potřebujete duplikovat tabulku v MySQL do nové tabulky, musíte použít příkaz CREATE TABLE a SELECT, jak je uvedeno níže

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

Řekněme, že máte existující tabulku produktů

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

Zde je dotaz SQL ke zkopírování produktů tabulky do nové tabulky s názvem 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 |
+------------+--------------------+-------+

Je důležité si uvědomit, že nová tabulka bude vytvořena pouze v případě, že neexistuje. V opačném případě se zobrazí chyba. Chcete-li se vyhnout chybě při duplikování tabulky v MySQL, můžete použít příkaz IF NOT EXIST v příkazu CREATE TABLE, jak je uvedeno níže.

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

Bonusové čtení:Uložená procedura MySQL s parametry

Chcete-li zkopírovat pouze částečná data z jedné tabulky do nové tabulky, můžete v příkazu SELECT použít podmínku WHERE, jak je znázorněno

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

Zde je dotaz SQL pro zkopírování dílčích dat z produktů tabulky do nové tabulky s názvem 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 |
+------------+--------------+-------+

Bonusové čtení:Jak vytvořit složený primární klíč v MySQL

MySQL zkopírovat strukturu tabulky do nové tabulky

Výše uvedené dotazy pouze kopírují tabulku a data. Nebudou kopírovat objekty tabulky, jako je primární klíč, indexy, omezení, spouštěče. Chcete-li zkopírovat strukturu tabulky a data, musíte použít příkaz CREATE TABLE s klíčovým slovem LIKE, jak je uvedeno níže

CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;

Řekněme, že máte objednávky tabulka s primárním klíčem

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

a chcete zkopírovat strukturu objednávek na new_orders stůl. Zde je dotaz SQL pro zkopírování struktury tabulky do nové tabulky.

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

Bonusové čtení:Jak zkrátit tabulku v MySQL

MySQL Kopírování dat z jedné tabulky do existující tabulky

Výše uvedený příkaz vytvoří novou tabulku se strukturou staré tabulky. Poté musíte použít příkaz INSERT ke zkopírování dat ze staré tabulky do nové tabulky.

INSERT new_table
SELECT * FROM existing_table;

Zde je dotaz SQL pro kopírování dat z objednávek do existující tabulky 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 |
+----+--------------+------------+-------+-------------+---------------------+

Bonusové čtení:MySQL DROP VIEW

MySQL Kopírování tabulky z jedné databáze do druhé

Pokud chcete duplikovat tabulku v MySQL z databáze do jiné, pak stačí do názvů tabulek zahrnout názvy databází, jak je uvedeno níže tučně

CREATE TABLE destination_db.new_table 
LIKE source_db.existing_table;

INSERT destination_db.new_table 
SELECT *
FROM source_db.existing_table;

První příkaz bude duplikovat strukturu tabulky v MySQL ze zdrojové databáze (např. source_db) do jiné (např. destination_db). Druhý příkaz zkopíruje data z jedné tabulky do druhé.

Nahraďte source_db a destination_db ve výše uvedených dotazech se zdrojovou a cílovou databází.

Doufejme, že vám tento článek pomůže duplikovat tabulku v MySQL. Při duplikování tabulky v MySQL s velkým počtem záznamů buďte opatrní, protože to může zabrat spoustu času a zdrojů.

Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Vyzkoušejte to ještě dnes!

  1. SQLite NOT NULL omezení

  2. SQL MEZI – chytré tipy pro vyhledávání řady hodnot

  3. Jak opravit:„SQLServerAgent aktuálně neběží…“

  4. Jak změnit časové pásmo serveru MySQL