MySQL — как вставить данные из одной таблицы в другую?
Скопировать данные из одной таблицы в другую в базе данных MySQL полностью или частично очень просто. Далее рассмотрим несколько вариантов копирования данных.
Итак, чтобы полностью скопировать данные из одной таблицы в другую достаточно такого запроса:
INSERT INTO table_to
SELECT * FROM table_from
Вместо table_to и table_from подставляете названия своих таблиц и все получится.
Скопировать только некоторые столбцы из одной таблицы в другую можно таким запросом:
INSERT INTO table_to (`col1`, `col2`, `col2`)
SELECT `a1`, `a2`, `a3` FROM table_from
И последний вариант, копирование данных из таблицы в таблицу по какому-либо условию:
INSERT INTO table_to (`col1`, `col2`, `col2`)
SELECT `a1`, `a2`, `a3` FROM table_from WHERE `a1` > 100;
Выполнить данные запросы можно с помощью phpAdmin или любого другого mysql-менеджера. На этом все, до новых встреч!
Осваиваем инструкцию INSERT INTO SQL
Инструкция INSERT INTO SQL и INSERT INTRO SELECT используются для вставки новых строк в таблицу. Существует два способа использования инструкций:
- Только значения : Первый метод предусматривает указание только значений данных, которые нужно вставить без имен столбцов.
INSERT INTO имя_таблицы VALUES (значение1, значение2, значение3. ); имя_таблицы: имя таблицы. значение1, значение2. : значения первого столбца, второго столбца. для новой записи
- Имена столбцов и значения : При втором методе указываются имена столбцов и значения строк для вставки:
INSERT INTO имя_таблицы (столбец1, столбец2, столбец3. ) VALUES (значение1, значение2, значение3. ); имя_таблицы: имя таблицы. столбец1: имя первого столбцы, второго столбца . значение1, значение2. : значения первого столбца, второго столбца. для новой записи

Способ 1 ( вставка только значений ):
INSERT INTO Student VALUES ('5','HARSH','WEST BENGAL','8759770477','19');
После использования INSERT INTO SELECT таблица Student теперь будет выглядеть следующим образом:
| ROLL_NO | NAME | ADDRESS | PHONE | Age |
| 1 | Ram | Delhi | 9455123451 | 18 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 4 | SURESH | Delhi | 9156768971 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 5 | HARSH | WEST BENGAL | 8759770477 | 19 |
Способ 2 ( вставка значений только в указанные столбцы ):
INSERT INTO Student (ROLL_NO, NAME, Age) VALUES ('5','PRATIK','19');
Таблица Student теперь будет выглядеть следующим образом:
| ROLL_NO | NAME | ADDRESS | PHONE | Age |
| 1 | Ram | Delhi | 9455123451 | 18 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 4 | SURESH | Delhi | 9156768971 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 5 | PRATIK | null | null | 19 |
Обратите внимание, что для столбцов, значения для которых не указаны, задается null .
Использование SELECT в инструкции INSERT INTO
Можно использовать инструкцию MySQL INSERT SELECT для копирования строк из одной таблицы и их вставки в другую.
Использование этого оператора аналогично использованию INSERT INTO . Разница в том, что оператор SELECT применяется для выборки данных из другой таблицы. Ниже приведены различные способы использования INSERT INTO SELECT :
- Вставка всех столбцов таблицы : можно скопировать все данные таблицы и вставить их в другую таблицу.
INSERT INTO первая_таблица SELECT * FROM вторая_таблица; первая_таблица: имя первой таблицы. вторая_таблица: имя второй таблицы.
Мы использовали инструкцию SELECT для копирования данных из одной таблицы и инструкцию INSERT INTO для их вставки в другую.
- Вставка отдельных столбцов таблицы . Можно скопировать только те столбцы таблицы, которые необходимо вставить в другую таблицу.
INSERT INTO первая_таблица(имена_столбцов1) SELECT имена_столбцов2 FROM вторая_таблица; первая_таблица: имя первой таблицы. вторая_таблица: имя второй таблицы. имена_столбцов1: имена столбцов, разделенные запятой(,) для таблицы 1. имена_столбцов2: имена столбцов, разделенные запятой(,) для таблицы 2.
Мы использовали инструкцию SELECT для копирования данных только из выбранных столбцов второй таблицы и инструкцию INSERT INTO MySQL SELECT для их вставки в первую таблицу.
- Копирование определенных строк из таблицы . Можно скопировать определенные строки из таблицы для последующей вставки в другую таблицу с помощью условия WHERE с оператором SELECT . В этом случае нужно использовать соответствующее условие в WHERE .
INSERT INTO таблица1 SELECT * FROM таблица2 WHERE условие; таблица1: имя первой таблицы. таблица2: имя второй таблицы. условие: условие для выбора строк.
Таблица 2: LateralStudent
| ROLL_NO | NAME | ADDRESS | PHONE | Age |
| 7 | SOUVIK | DUMDUM | 9876543210 | 18 |
| 8 | NIRAJ | NOIDA | 9786543210 | 19 |
| 9 | SOMESH | ROHTAK | 9687543210 | 20 |
Способ 1 ( вставка всех строк и столбцов ):
INSERT INTO Student SELECT * FROM LateralStudent;
Этот запрос вставит все данные таблицы LateralStudent в таблицу Student . После применения INSERT INTO SQL SELECT таблица Student будет выглядеть следующим образом:
| ROLL_NO | NAME | ADDRESS | PHONE | Age |
| 1 | Ram | Delhi | 9455123451 | 18 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 4 | SURESH | Delhi | 9156768971 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 7 | SOUVIK | DUMDUM | 9876543210 | 18 |
| 8 | NIRAJ | NOIDA | 9786543210 | 19 |
| 9 | SOMESH | ROHTAK | 9687543210 | 20 |
Способ 2 ( вставка отдельных столбцов ):
INSERT INTO Student(ROLL_NO,NAME,Age) SELECT ROLL_NO, NAME, Age FROM LateralStudent;
Этот запрос вставит данные из столбцов ROLL_NO , NAME и Age таблицы LateralStudent в таблицу Student . Для остальных столбцов таблицы Student будет задано значение null . После применения SQL INSERT SELECT таблица будет выглядеть следующим образом:
| ROLL_NO | NAME | ADDRESS | PHONE | Age |
| 1 | Ram | Delhi | 9455123451 | 18 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 4 | SURESH | Delhi | 9156768971 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 7 | SOUVIK | Null | null | 18 |
| 8 | NIRAJ | Null | null | 19 |
| 9 | SOMESH | Null | null | 20 |
- Выбор определенных строк для вставки :
INSERT INTO Student SELECT * FROM LateralStudent WHERE Age = 18;
Этот запрос выберет только первую строку из таблицы LateralStudent для вставки в таблицу Student . После применения INSERT SELECT таблица будет выглядеть следующим образом:
| ROLL_NO | NAME | ADDRESS | PHONE | Age |
| 1 | Ram | Delhi | 9455123451 | 18 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 4 | SURESH | Delhi | 9156768971 | 18 |
| 3 | SUJIT | ROHTAK | 9156253131 | 20 |
| 2 | RAMESH | GURGAON | 9562431543 | 18 |
| 7 | SOUVIK | DUMDUM | 9876543210 | 18 |
MySQL: Как скопировать данные таблицы в другую
Есть довольно много способов скопировать необходимые данные из одной таблицы в базе MySQL в другую таблицу.Рассмотрим несколько примеров, что бы понять принцип работы.
Если нам необходимо полностью скопировать данные:
INSERT INTO `table_1` SELECT * FROM `table_2`;
Такой простой запрос возьмет данные с таблицы table_2 и вставит их в table_1
Если нужно сделать копию данных из одной таблицы MySQL в другую с условием:
INSERT INTO `table_1` SELECT * FROM `table_2` WHERE `row`='1';
Данный запрос возьмет все данные с таблицы table_2 у которых столбец row=1 и вставит их в table_1
Если необходимо скопировать только нужные столбцы:
INSERT INTO `table_1`(`row_1`, `row_2`, `row_3`) SELECT `row_1`, `row_2`, `row_3` FROM `table_2`;
Вот такое простое решение для копирования данных из одной MySQL таблицы в другую.
Копирование столбцов из одной таблицы в другую (компонент Database Engine)
В этом разделе описывается копирование столбцов из одной таблицы в другую с копированием только определения столбца или определения и данных в SQL Server с помощью SQL Server Management Studio или Transact-SQL.
В этом разделе
- Перед началом работыОграниченияБезопасность
- Копирование столбцов с помощью:Среда SQL Server Management StudioTransact-SQL
Перед началом
Ограничения
При копировании из одной базы данных в другую столбца, имеющего псевдоним типа данных, исходный тип данных в целевой базе данных может оказаться недоступным. В этом случае столбцу будет назначен ближайший подходящий базовый тип данных, доступный в целевой базе данных.
Безопасность
Разрешения
Требуется разрешение ALTER на таблицу.
Использование среды SQL Server Management Studio
Копирование определения столбца из одной таблицы в другую
- Щелкнув правой кнопкой мыши, откройте таблицу со столбцами, предназначенными к копированию, и таблицу, в которую необходимо выполнить копирование, затем нажмите кнопку Разработка.
- Выберите вкладку исходной таблицы и выделите нужные столбцы.
- В меню Правка выберите Копировать.
- Выберите вкладку таблицы, в которую требуется скопировать столбцы.
- Выделите столбец, после которого нужно поместить вставляемые столбцы, и в меню Правка выберите Вставить.
Копирование данных из одной таблицы в другую
- Следуйте приведенным выше инструкциям для копирования определения столбцов.
Примечание Прежде чем скопировать данные из одной таблицы в другую, убедитесь, что типы данных целевых столбцов совместимы с типами данных исходных.
Использование Transact-SQL
Копирование определения столбца из одной таблицы в другую
- Нельзя копировать отдельные столбцы из одной таблицы в другую (существующую) с использованием инструкций Transact-SQL. Однако можно создать новую таблицу в файловой группе по умолчанию и вставить в нее результирующие строки из запроса с помощью инструкции SELECT INTO. Дополнительные сведения см. в разделе Предложение INTO (Transact-SQL).
Копирование данных из одной таблицы в другую
- В обозревателе объектовподключитесь к экземпляру компонента Компонент Database Engine.
- На стандартной панели выберите пункт Создать запрос.
- Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.
USE AdventureWorks2022; GO CREATE TABLE dbo.EmployeeSales ( BusinessEntityID varchar(11) NOT NULL, SalesYTD money NOT NULL ); GO INSERT INTO dbo.EmployeeSales SELECT BusinessEntityID, SalesYTD FROM Sales.SalesPerson; GO
