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