Как клонировать и копировать таблицы в MySql

При работе с базами данных может возникнуть ситуация, когда вам в MySQL нужно клонировать или продублировать существующую таблицу в новую из-за их сходства в столбцах и атрибутах, или же, для проведения тестов без затрагивания исходной таблицы.
Я столкнулся с подобной ситуацией, когда мне нужно было создать структурную копию одной таблицы, заполнить её данными, а потом заменить ею исходную. Подход с двумя идентичными таблицами применялся для того, чтобы для посетителей сайта вдруг не возникло ситуации, что таблица очищена в ожидании заполнения новыми данными. Потому, сначала мы создаем купию таблицы в MySql с каким-то временным именем, наполняем её данными, а затем переименовываем по имени первой. В результате чего, пользователь увидит обновленные данные, и не будет момента, когда эта таблица может быть пустой.
Поскольку существующая и новая таблицы очень похожи, моим быстрым решением будет клонирование существующей таблицы в SQL для создания новой таблицы на её основе. В SQL это сделать довольно просто, нужно выполнить всего пару команд, чтобы наилучшим образом удовлетворить свои потребности в клонировании таблицы.
В этой статье я покажу вам, как дублировать и клонировать существующие таблицы в SQL.
Простое клонирование
Первый метод называется Простое клонирование и, как следует из названия, он создает таблицу из другой таблицы без учета атрибутов столбцов и индексов.
Наприме, если у меня есть таблица users , я могу легко создать другую таблицу adminUsers , если мне не критично переносить атрибуты и индексы с таблицы users .
Приведенная ниже команда SQL создаёт простую структурную копию таблицы пользователей:
Используйте это для быстрого клонирования любою таблицы, которая будет включать только структуру и данные исходной таблицы.
Поверхностное клонирование
Поверхностное клонирование в основном используется для создания копии существующей структуры данных таблицы и атрибутов столбца без копирования данных. Это только создаст пустую базу таблицы с идентичной структурой исходной таблицы.
Следующая команда создаст пустую базу таблицы на основе исходной таблице.
Используйте это, если вам нужна только структура данных и атрибуты столбцов исходной таблицы, без наполнения её данными из исходной.
Глубокое клонирование
Глубокое клонирование значительно отличается от простого клонирования и похоже на поверхностное клонирование, но с тем отличием, что копирует структуру таблицы вместе с данными исходной таблицы. Как следует из названия, она создаёт глубокую копию исходной таблицы.
Это означает, что новая таблица будет иметь все атрибуты каждого столбца, индексы и данные существующей таблицы. Это весьма полезно, если вы хотите сохранить индексы и атрибуты исходной таблицы.
Чтобы достичь этого, мы должны создать пустую таблицу на основе структуры и атрибутов исходной, затем выбрать данные из исходной таблицы и вставить их в новую таблицу.
Потому, создадим структуру новой таблицы по исходной и наполним её данными:
Еще одна интересная вещь: допустим, вам не нужны все данные из существующей таблицы, а нужны только некоторые данные по определённым условиям, тогда уточнение вашего SELECT -запроса — ваш лучший помощник.
Например, у нас есть пользователи с userType = "admin" в нашей таблице пользователей, и мы хотим копировать только этих пользователей в нашу новую таблицу, вы можете легко сделать это, выполнив запрос:
Круто, правда? Надеюсь, что я ответил на вопрос о том, как в MySql клонировать таблицу и скопировать из неё данные в новую.
Клонирование таблиц в MySQL
Необходимо создать копию таблицы со всеми данными или же только копию структуры?Воспользуемся стандартными запросами MySQL для этих нужд.
Задача: нужно создать новую пользовательскую таблицу со структурой, аналогичной существующей таблице. Эта обычная ситуация, когда нужно просто скопировать структуру и ключи некоторой таблицы, без копирования данных. Выполняем запрос:
Задача: нужно склонировать таблицы базы данных со всеми данными
В случае, если вам нужно клонировать всю таблицу вместе с данными, то ниже приведенный метод может помочь вам.
Как копировать таблицу в sql

Существует несколько способов копирования таблицы в базе данных MS SQL Server. Предлагаю несколько вариантов создания копии таблиц. Какой из них выбрать – зависит от структуры таблицы, наличия в ней индексов, триггеров и т.п., а также желания делать что-то руками.
1. Ручной метод копирования структуры таблицы
В Micrisoft SQL Management Studio выбрать базу, выбрать таблицу, нажать правой кнопкой мыши и выбрать пункты «Script Table as» -> «CREATE TO» -> «New Query Editor Window». В окне запроса откроется код для создания таблицы. В нем нужно указать имя базы, в которой нужно сделать копию таблицы, и новое имя, если база не меняется. Как создать код для создания структуры имеющейся таблицы, показано на рисунке ниже.

Как создать код для создания структуры имеющейся таблицы
С помощью этого способа будут созданы индексы таблицы, но не скопируются триггеры. Их нужно копировать аналогичным способом.
Для копирования данных в уже созданную таблицу нужно использовать такой SQL запрос:
Cкопировать таблицу с данными (MySQL)
В MySQL, есть возможность, быстро создать новую таблицу на основе существующей и перенести все данные этой таблицы.
Например у нас есть таблица auto .
Как видно из CREATE -запроса, в таблице есть 3 индекса: PRIMARY KEY id , UNIQUE INDEX name , INDEX country .
Необходимо создать новую таблицу car , на основе auto , и перенести туда все данные.
В MySQL существует два быстрых способа:
CREATE TABLE SELECT FROM
Первый способ создание и копирование таблицы при помощи команды:
Данный запрос создает новую таблицу <new_table> , на основе таблицы <original_table> , и копирует данные получаемые запросом SELECT * FROM <original_table> .
Главный минус этого способа — в таблице <new_table> не будет индексов таблицы <original_table> .
Главный плюс — всего один запрос.
Пример
CREATE TABLE LIKE и INSERT SELECT
Второй способ состоит из двух запросов, зато копирует и данные, и индексы.