Sql select from insert: SQL INSERT INTO SELECT Statement

SQL Оператор INSERT INTO SELECT

« Предыдущая

Следующая глава »


С помощью SQL вы можете копировать информацию из одной таблицы в другую.

Оператор INSERT INTO SELECT копирует данные из одной таблицы и
вставляет его в существующую таблицу.


Оператор SQL INSERT INTO SELECT

Оператор INSERT INTO SELECT выбирает данные из одной таблицы и вставляет их
в существующую таблицу. Любые существующие строки в целевой таблице не затрагиваются.

SQL INSERT INTO SELECT Syntax

Мы можем скопировать все столбцы из одной таблицы в другую, существующая таблица:

ВСТАВИТЬ В стол2
ВЫБЕРИТЕ * ИЗ таблица1;

Или мы можем скопировать только нужные столбцы в другую существующую таблицу:

ВСТАВИТЬ В table2
(имя_столбца)
ВЫБЕРИТЕ имя_столбца(ов)
С таблица1;


Демонстрационная база данных

В этом руководстве мы будем использовать известную учебную базу данных Northwind.

Ниже представлена ​​выборка из таблицы «Клиенты»:

CustomerID ИмяКлиента Контактное имя Адрес Город Почтовый индекс Страна
1 Альфред Футтеркисте Мария Андерс ул. Обере 57 Берлин 12209 Германия
2 Ана Трухильо Emparedados y helados Ана Трухильо Авда. Конститусьон 2222 Мексика Д.Ф. 05021 Мексика
3 Антонио Морено Такерия Антонио Морено Матадерос 2312 Мексика Д.Ф. 05023 Мексика

И выбор из таблицы «Поставщики»:

идентификатор поставщика Название Поставщика Контактное имя Адрес Город Почтовый индекс Страна Телефон
1 Экзотическая жидкость Шарлотта Купер ул. Гилберта, 49 Лондона ЭК1 4СД Великобритания (171) 555-2222
2 Новый Орлеан Cajun Delights Шелли Берк Почтовый индекс Коробка 78934 Новый Орлеан 70117 США (100) 555-4822
3 Усадьба бабушки Келли Регина Мерфи 707 Оксфорд Роуд. Анн-Арбор 48104 США (313) 555-5735

SQL INSERT INTO SELECT Примеры

Скопируйте только несколько столбцов из «Поставщики» в «Клиенты»:

Пример

INSERT INTO Customers (CustomerName, Country)
ВЫБЕРИТЕ имя поставщика, страну из поставщиков;

Попробуйте сами »

Скопируйте в «Клиенты» только немецких поставщиков:

Пример

INSERT INTO Customers (CustomerName, Country)
ВЫБЕРИТЕ имя поставщика, страну из поставщиков
ГДЕ Country=’Германия’;

Попробуйте сами »

« Предыдущая

Следующая глава »

SQL INSERT INTO SELECT — SqlSkull

Оператор SQL INSERT INTO SELECT выбирает данные из одной таблицы и вставляет их в другую таблицу.

По сути, он копирует данные из таблицы, которую вы можете назвать исходной таблицей, в другую таблицу, которая является целевой таблицей.

Типы данных столбцов в исходной и целевой таблицах должны совпадать.

Не требуется, чтобы целевая таблица имела такое же количество столбцов, как определено в исходной таблице.

СИНТАКСИС

 INSERT INTO Target_Table 
SELECT Col1, Col2,..
FROM Source_Table ;

Давайте рассмотрим пример оператора INSERT INTO SELECT в SQL Server.

Чтобы продемонстрировать это, сначала мы создадим исходную таблицу с именем EMP_SOURCE и вставим несколько записей в исходную таблицу.

Затем создаст целевую таблицу с именем EMP_TARGET.

 CREATE TABLE EMP_SOURCE ( 
EMPID INT IDENTITY(1,1),
EMPNAME VARCHAR(50),
EMPCODE VARCHAR(10)
)

ВСТАВИТЬ В EMP_SOURCE (EMPNAME,EMPCODE)
ЗНАЧЕНИЯ ('RAJ SINGH','XRT78') ,
('SUNIL RAWAT','VFT79'),
('MANISH KR','YUI98'),
( 'Ajay Aggarwal', 'ERT65')

 Создание таблицы EMP_TARGE 

Как видите, в таблице EMP_SOURCE есть несколько записей, которые мы вставили, в то время как таблица EMP_TARGET пуста.

SELECT * FROM EMP_SOURCE
SELECT * FROM EMP_TARGET

 

Теперь мы скопируем данные таблицы EMP_SOURCE в таблицу EMP_TARGET.

Следующая инструкция SQL копирует данные из исходной таблицы EMP_SOURCE в целевую таблицу EMP_TARGET.

 ВСТАВИТЬ В EMP_TARGET(EMPID, EMPNAME, EMPCODE ) 
ВЫБРАТЬ EMPID, EMPNAME, EMPCODE
ИЗ EMP_SOURCE ;

 

 

Теперь вы можете проверить целевую таблицу, и вы увидите, что все записи из исходной таблицы копируются в целевую таблицу.

 SELECT * FROM EMP_SOURCE 
SELECT * FROM EMP_TARGET

 

Копировать только определенные значения столбцов

целевая таблица.

Допустим, вы хотите скопировать значение для столбца EmpName только для EMPID = 1, тогда в этом случае вам придется изменить приведенный выше оператор, выбрав только столбец EMPName в операторе выбора, также необходимо добавить условие where, как указано ниже.