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!