Понякога може да се наложи да копирате данни от една таблица в друга в MySQL или да копирате таблици в MySQL. Ето как да дублирате таблица в MySQL. Можете да го използвате, за да клонирате таблица в MySQL или да копирате структура на таблицата, или дори да копирате таблица от една база данни в друга.
Как да дублирам таблица в MySQL
Ето стъпките за дублиране на таблица в MySQL. Има различни случаи на използване за копиране на данни от една таблица в друга. Ще разгледаме всеки от тях подробно.
MySQL Копиране на данни от една таблица в нова таблица
Ако трябва да дублирате таблица в MySQL в нова таблица, трябва да използвате израз CREATE TABLE и SELECT, както е показано по-долу
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Да приемем, че имате съществуваща таблица продукти
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Ето SQL заявката за копиране на продукти таблица в нова таблица, наречена нови_продукти
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 | +------------+--------------------+-------+
Важно е да се отбележи, че новата таблица ще бъде създадена само ако не съществува. В противен случай ще получите грешка. За да избегнете грешка, когато дублирате таблица в MySQL, можете да използвате IF NOT EXIST в израза CREATE TABLE, както е показано по-долу.
mysql> create table if not exist new_products select * from products;
Бонус четене:MySQL Съхранена процедура с параметри
За да копирате само частични данни от една таблица в нова таблица, можете да използвате условие WHERE във вашия оператор SELECT, както е показано
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Ето SQL заявката за копиране на частични данни от продукти таблица в нова таблица, наречена нови_продукти2
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 | +------------+--------------+-------+
Бонус за четене:Как да създадете композитен първичен ключ в MySQL
MySQL Копиране на структурата на таблицата в нова таблица
Горните заявки копират само таблица и данни. Те няма да копират таблични обекти като първичен ключ, индекси, ограничения, тригери. За да копирате структурата и данните на таблицата, трябва да използвате израз CREATE TABLE с ключова дума LIKE, както е показано по-долу
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Да приемем, че имате поръчки таблица с първичен ключ
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 | | +--------------+--------------+------+-----+-------------------+----------------+
и искате да копирате структура на поръчки до нови_поръчки маса. Ето SQL заявката за копиране на структурата на таблицата в нова таблица.
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Бонус за четене:Как да съкратите таблицата в MySQL
MySQL Копиране на данни от една таблица в съществуваща таблица
Горното изявление ще създаде нова таблица със структура на старата таблица. След това трябва да използвате оператор INSERT, за да копирате данни от стара таблица в нова таблица.
INSERT new_table SELECT * FROM existing_table;
Ето SQL заявката за копиране на данни от поръчки към съществуваща таблица 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 | +----+--------------+------------+-------+-------------+---------------------+
Бонус четене:MySQL DROP VIEW
Таблица за копиране на MySQL от една база данни в друга
Ако искате да дублирате таблица в MySQL от база данни в друга, просто включете имената на базата данни в имената на вашите таблици, както е показано по-долу с удебелен шрифт
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
Първият израз ще дублира структурата на таблицата в MySQL от изходна база данни (напр. source_db) в друга (напр. destination_db). Вторият израз ще копира данни от една таблица в друга.
Заменете source_db и destination_db в горните заявки съответно с изходна и дестинационна база данни.
Надяваме се, че тази статия ще ви помогне да дублирате таблица в MySQL. Моля, бъдете внимателни, когато дублирате таблица в MySQL с голям брой записи, тъй като това може да отнеме много време и ресурси.
Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!