Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Cкопировать таблицу с данными (MySQL)

В MySQL, есть возможность, быстро создать новую таблицу на основе существующей и перенести все данные этой таблицы.

Например у нас есть таблица auto.

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `auto` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` CHAR(50) NOT NULL,
    `country` CHAR(50) NOT NULL,
    `site` CHAR(255) NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE INDEX `name` (`name`),
    INDEX `country` (`country`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

Как видно из CREATE-запроса, в таблице есть 3 индекса: PRIMARY KEY id, UNIQUE INDEX name, INDEX country.

Записи таблицы:

1
2
3
4
5
INSERT INTO `auto`
    (`id`, `name`, `country`, `site`) VALUES
    (1, 'Mercedes-Benz', 'Germany', 'mercedes-benz.de'),
    (2, 'KIA', 'Korea', 'kia.ru'),
    (3, 'Toyota', 'Japan', 'toyota-global.com');

Необходимо создать новую таблицу car, на основе auto, и перенести туда все данные.

В MySQL существует два быстрых способа:

CREATE TABLE SELECT FROM

Первый способ создание и копирование таблицы при помощи команды:

1CREATE TABLE <new_table> SELECT * FROM <original_table>

Данный запрос создает новую таблицу <new_table>, на основе таблицы <original_table>, и копирует данные получаемые запросом SELECT * FROM <original_table>.

Главный минус этого способа — в таблице <new_table> не будет индексов таблицы <original_table>.

Главный плюс — всего один запрос.

Пример

1CREATE TABLE `car` SELECT * FROM `auto`;

CREATE TABLE LIKE и INSERT SELECT

Второй способ состоит из двух запросов, зато копирует и данные, и индексы.

Первый запрос — это копирование структуры таблицы.

Второй — перенос данных через INSERT INTO SELECT.

Пример

1
2
CREATE TABLE `car` LIKE `auto`;
INSERT INTO `car` SELECT * FROM `auto`;

Результат

В обоих результатах таблица car будет содержать данные таблицы auto:

idnamecountrysite
1Mercedes-BenzGermanymercedes-benz.de
2KIAKoreakia.ru
3ToyotaJapantoyota-global.com
Опубликовано: 15 ноября 2013  ·  Автор: Артём Фёдоров  ·  3535 просмотров

Категория

ГлавнаяСУБДMySQLCкопировать таблицу с данными (MySQL)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

MySQL, СУБД

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания