Перенос запроса SELECT INTO из MSSQL в MySQL
Пройдите тест, узнайте какой профессии подходите
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы
Быстрый ответ
Если вам нужно скопировать структуру и содержимое таблицы в MySQL, то используйте следующую команду CREATE TABLE ... AS SELECT
. Она заменяет SELECT INTO
:
``` CREATE TABLE новаятаблица AS SELECT * FROM существующаятаблица;
Таким образом, вы без труда создаёте **`новую_таблицу`**, дублируя схему и данные из **`существующей_таблицы`**.
Для составления таблицы с конкретной структурой или для копирования выборочных данных следует адаптировать запрос `SELECT`.
[AsideBanner]
##Возможности оператора CREATE TABLE AS SELECT
Идеальное решение для копирования таблиц или их содержимого в MySQL представляет оператор `CREATE TABLE ... AS SELECT`. Он не просто дублирует данные, но и формирует **новую таблицу**, опираясь на результат запроса `SELECT`.
### Обращаем внимание на отличия: Типы данных и ограничения
Перед началом работы проверьте совместимость типов данных исходной и новой таблиц. К сожалению, ограничения, индексы и предустановленные значения не дублируются автоматически. Их настройка должна выполняться вручную после выполнения запроса.
### Изъятие определённой выборки данных
Если нужно скопировать определённый набор данных, воспользуйтесь `WHERE` и выбором конкретных столбцов в запросе `SELECT`:
**
CREATE TABLE новаятаблица AS SELECT столбец1, столбец2 FROM существующаятаблица WHERE условие;
### Ошибка "Undeclared variable"? Не в нашем случае!
Если вы пробуете использовать `SELECT INTO` прямо в MySQL, столкнётесь с ошибкой "Undеclared Variable" – в MySQL отсутствует поддержка синтаксиса `SELECT INTO` для создания новых таблиц (в отличие от MSSQL). Но не беспокойтесь, мы уже обошли эту проблему.
### Перенос данных в готовую таблицу: Команда INSERT INTO SELECT
Для переноса данных из одной таблицы в другую применяйте команду `INSERT INTO ... SELECT`:
**
INSERT INTO целеваятаблица (столбец1, столбец2) SELECT столбец1, столбец2 FROM исходнаятаблица WHERE условие;
При этом следует учесть, что порядок и количество столбцов в частях `INSERT INTO` и `SELECT` должны соответствовать друг другу.
## Визуализация
Операцию `SELECT INTO` можно сравнить с переездом, когда вещи перекладывают из одной коробки в другую:
Процесс выполнения команды `SELECT INTO`:
Переезд успешно завершён!
`SELECT INTO` – это эффективное управление данными, схожее с логистикой переезда!
## Временные таблицы: Экспериментальная площадка
Временные таблицы – это ваша "лаборатория" для тестирования сложных операций: сначала протестируйте всё в **временной таблице**, а потом перенесите результаты в **постоянную таблицу**.
`CREATE TEMPORARY TABLE временная_таблица AS SELECT * FROM существующая_таблица; -- здесь можно без зазрения совести экспериментировать, в конце концов, это временная таблица! 😁`
Произведите все необходимые изменения, а затем перенесите данные в **постоянную таблицу**.
## Работа с большими объёмами данных: Производительность на первом месте
При обработке больших объёмов данных приоритет отдаётся производительности. Индексы не копируются вместе с данными, поэтому после выполнения запроса необходимо настроить их вручную. Чтобы улучшить производительность запроса используйте `EXPLAIN`, это позволит проанализировать его и оптимизировать при необходимости.
## Сложное отображение столбцов: Всё под контролем!
Если вам необходимо не только скопировать, но и преобразовать данные при работе со **сложными схемами** или когда требуется **подготовка данных** до их вставки, используйте **алиасы** и **функции** в запросе `SELECT`:
**
CREATE TABLE новая_таблица AS SELECT исходныйстолбец1 AS новоеназвание, -- 🕵️♀️ это ренейминг на лету CONCAT(исходныйстолбец2, ' ', исходный столбец3) AS столбец_объединенный -- 🤝 группировка данных FROM существующая_таблица;
```
Теперь вы без проблем можете создавать таблицу с нужной схемой и форматом данных.
Полезные материалы
- MySQL :: Руководство по MySQL 8.0 :: 13.2.7.1 INSERT ... SELECT Statement – Детальное изложение синтаксиса INSERT ... SELECT в официальной документации MySQL.
- MySQL :: Руководство по MySQL 8.0 :: 13.2.13.1 SELECT ... INTO Statement – Более подробная информация по использованию SELECT INTO OUTFILE из официальных источников.
- Difference Between INSERT INTO and SELECT INTO – Database Guide – Ключевые различия между INSERT INTO и SELECT INTO.
- Статья на SQLShack об использовании SELECT INTO в MySQL – Глубокое изучение возможностей SELECT INTO в MySQL.