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

Jak zkopírovat tabulku v MySQL

Někdy může být potřeba zkopírovat tabulku v MySQL. Existuje mnoho různých způsobů, jak zkopírovat tabulku v MySQL. Zde jsou kroky ke kopírování tabulky v MySQL. Můžete je použít ke kopírování tabulky do jiné tabulky, kopírování tabulky z jedné databáze do druhé, kopírování struktury tabulky, kopírování tabulky s daty, kopírování struktury tabulky s indexem nebo kopírování tabulky z jednoho serveru na druhý.

Jak zkopírovat tabulku v MySQL

Zde je návod, jak zkopírovat tabulku v MySQL. Existují různé případy použití pro kopírování tabulky v MySQL. Na každý z nich se podíváme podrobně.

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

Obvykle potřebujete zkopírovat tabulku v MySQL do nové tabulky. V tomto případě 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;

Ve výše uvedeném dotazu musíte zadat názvy existující tabulky spolu se sloupci, které chcete zkopírovat, a také název nové tabulky. MySQL naplní vaši novou tabulku výsledkem vašeho příkazu SELECT.

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

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

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

Upozorňujeme, ž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 klauzuli IF NOT EXIST v příkazu CREATE TABLE, jak je uvedeno níže.

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

Bonusové čtení:Jak přidat omezení NOT NULL do MySQL

Pokud chcete zkopírovat pouze částečná data z jedné tabulky do nové tabulky, tedy některé řádky, ale ne všechna, 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 ze seznamu_produktů tabulky do nové tabulky s názvem 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 |
+------------+--------------+-------+

Bonusové čtení:Jak přidat výchozí omezení v MySQL

MySQL zkopírovat strukturu tabulky do nové tabulky

Výše uvedené SQL 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 (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 |                |
+--------------+--------------+------+-----+-------------------+----------------+

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

Jak vidíte, tabulka new_orders má také pole primárního klíče id. Výše uvedený příkaz zkopíruje pouze strukturu tabulky, ale ne data. Data musíte zkopírovat samostatně, jak je uvedeno v další části.

Bonusové čtení:MySQL Vyberte prvních N řádků na skupinu

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

Výše uvedený příkaz vytvoří novou tabulku se strukturou staré tabulky, ale bude to prázdná tabulka. 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í:Kopírovací databáze MySQL

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

Pokud chcete duplikovat tabulku v MySQL z databáze do jiné, pak stačí zahrnout názvy databází do názvů tabulek při použití výše uvedených SQL dotazů, 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 SQL výše bude duplikovat strukturu tabulky v MySQL ze zdrojové databáze (např. source_db ) do jiného (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 zkopírovat tabulku v MySQL. Při kopírová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. Import CSV dat pomocí PHP/MySQL

  2. Jak urychlit načítání dat z oracle sql do pandas df

  3. MySQL dotaz k získání nejprodávanějších produktů

  4. Uložit obrázek do databáze blob; načíst z db do Pictureboxu