Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да копирам таблица в MySQL

Понякога може да се наложи да копирате таблица в 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 улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Актуализирайте реда с данни от друг ред в същата таблица

  2. трябва да върне два набора данни с две различни клаузи where

  3. Остатъкът в PostgreSQL, MS SQL Server, MySQL и SQLite

  4. Как да управлявате вашата база данни с администратор

  5. Как да използвате изгледи в MySQL база данни