TOP

SQL INSERT INTO SELECT

INSERT INTO SELECT Descrição

A instrução SQL INSERT INTO SELECT copia dados de uma tabela e os insere em outra tabela.

A instrução INSERT INTO SELECT requer que os tipos de dados nas tabelas de origem e de destino correspondam.


Os registros existentes na tabela de destino permanecem e não são afetados pelo processo de cópia.

INSERT INTO SELECT Sintaxe

Copia todas as colunas de uma tabela para outra:

INSERT INTO table2
SELECT * 
FROM table1
WHERE condition

Copia apenas algumas colunas de uma tabela para outra:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition

Banco de dados de demonstração

Neste tutorial usaremos o famoso banco de dados de exemplo "Northwind".

Abaixo está um exemplo da tabela "Customers" ("Clientes"):

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

E a amostra da tabela "Suppliers" ("Fornecedores"):

SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

INSERT INTO SELECT Exemplos

A consulta SQL a seguir copia "Suppliers" ("Fornecedores") para "Customers" ("Clientes") (colunas que não são preenchidas com dados conterão NULL):

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers

Outra versão da consulta SQL copia os dados da tabela “Fornecedores” para “Clientes” (preenche todas as colunas):

INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country 
FROM Suppliers

A seguinte instrução SQL copia apenas fornecedores alemães para a tabela Clientes:

INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country 
FROM Suppliers
WHERE Country = 'Germany'