Com o operador SQL SELECT INTO, você copia registros se­le­ci­o­na­dos para novas tabelas ou áreas de ar­ma­ze­na­mento tem­po­rá­rias. Essa é uma maneira rápida e confiável de se trans­fe­rir dados, por manter a or­ga­ni­za­ção e a clareza dos registros.

O que é SQL SELECT INTO?

A linguagem de pro­gra­ma­ção para bancos de dados SQL oferece uma série de fer­ra­men­tas pro­fis­si­o­nais de ge­ren­ci­a­mento, análise e edição de bancos de dados. Entre elas estão comandos como o SQL SELECT, que realiza diversas ações quando combinado a outros ope­ra­do­res. Com o SQL SELECT DISTINCT, por exemplo, você consegue remover valores du­pli­ca­dos. O operador SELECT INTO, por sua vez, copia registros de uma tabela e os transfere para outra. Tec­ni­ca­mente, SELECT INTO não é con­si­de­rado uma função nem um comando SQL, ope­ra­do­res SQL. Ele costuma ser con­si­de­rado uma cláusula em uma instrução SQL.

Dica

Conheça os fun­da­men­tos e funções mais im­por­tan­tes na nossa in­tro­du­ção ao SQL com exemplos.

Sintaxe de SELECT INTO

A sintaxe simples de SELECT INTO é a seguinte:

SELECT  * 
INTO  nova_tabela_destino 
FROM tabela_existente;
sql

Esses são os pa­râ­me­tros que devem ser uti­li­za­dos:

  • SELECT: O comando SELECT define as colunas na tabela existente das quais você deseja copiar os dados. Você pode es­pe­ci­fi­car nomes de colunas es­pe­cí­fi­cos ou usar o asterisco * para copiar todos os dados da tabela de origem.
  • INTO: Define e nomeia a nova tabela de destino para os registros copiados.
  • FROM: Seleciona a tabela existente da qual você deseja copiar os registros.
  • WHERE: Com a cláusula opcional SQL WHERE, você define condições adi­ci­o­nais es­pe­cí­fi­cas que os dados a serem copiados da tabela de origem devem cumprir.

Quando usar o operador SELECT INTO

Ba­si­ca­mente, SQL SELECT INTO é adequado para trans­fe­rir dados para uma nova tabela. Outras apli­ca­ções incluem agregação, ar­ma­ze­na­mento tem­po­rá­rio e extração de registros ou sub­con­jun­tos. Removendo du­pli­ca­tas com DISTINCT, por exemplo, você também con­se­guirá limpar e reduzir os dados obtidos.

Ge­ral­mente SELECT INTO é usado, de forma prática, nas seguintes situações:

  • Copiar, extrair e trans­fe­rir dados de clientes, pedidos, pacientes e produtos para novos projetos, estudos ou em migrações de dados.
  • Análises de ten­dên­cias e de marketing, por dados agregados de pedidos e vendas.
  • Análises de dados fi­nan­cei­ros por trans­fe­rên­cias de dados de tran­sa­ções.
  • Limpeza de dados de clientes ou fun­ci­o­ná­rios removendo du­pli­ca­tas em novas tabelas.
  • Coletas e análises de dados em armazéns de dados.
  • Coletas de dados para modelos de apren­di­zado de máquina.
Dica

Você está em busca de um sistema de ge­ren­ci­a­mento de banco de dados escalável e seguro? Conheça o SQL Server Hosting da IONOS e obtenha ofertas per­so­na­li­za­das de ser­vi­do­res e de hos­pe­da­gem.

VPS Hosting (Virtual Private Servers)
World-class VPS at America’s lowest price

Hos­pe­da­gem VPS poderosa e de baixo custo para rodar suas apli­ca­ções sob medida, com as­sis­tente pessoal e suporte 24 horas.

  • Save 50% or more vs leading hosts
  • Unlimited traffic & no setup fees 
  • 99.99% uptime gua­ran­teed
  • Free 24/7 premium support 

Exemplos práticos de SQL SELECT INTO

Para ilustrar como o SQL SELECT INTO funciona, ela­bo­ra­mos dois exemplos práticos.

Se­le­ci­o­nar e trans­fe­rir clientes únicos

Na tabela “Pedidos”, você deseja se­le­ci­o­nar toas as entradas únicas da coluna “No­me­Cli­ente” sem du­pli­ca­tas, e transferi-las para uma nova tabela de nome “Pe­di­dos­Novo”. Para fazer isso, proceda da seguinte forma:

SELECT DISTINCT NomeCliente
INTO PedidosNovo
FROM Pedidos;
sql

Trans­fe­rir entradas de clientes de uma de­ter­mi­nada região

Com a cláusula WHERE, você pode definir dados de clientes com condições adi­ci­o­nais. Se, por exemplo, você quiser trans­fe­rir todas as entradas com nomes de clientes do Brasil, deve proceder da seguinte forma:

SQL Server:

SELECT NomeCliente, Pais
INTO PedidosNovo
FROM Pedidos
WHERE Pais = 'Brasil';
sql

MySQL, Post­greSQL, SQlite:

INSERT INTO PedidosNovo (NomeCliente, Pais)
SELECT NomeCliente, Pais
FROM Pedidos
WHERE Pais = 'Brasil';
sql

Al­ter­na­ti­vas a SQL SELECT INTO

Além de SELECT INTO, existem outras opções em SQL para copiar e trans­fe­rir dados entre tabelas. Abaixo estão as mais uti­li­za­das:

  • INSERT INTO SELECT: Com SQL INSERT INTO SELECT, você também copia e transfere registros se­le­ci­o­na­dos ou re­sul­ta­dos em com­bi­na­ção com SELECT de uma tabela para uma tabela já existente. A diferença está no fato de que com SELECT INTO é possível criar uma nova tabela para a cópia e trans­fe­rên­cia.
  • CREATE TABLE AS: Com a instrução SQL CREATE TABLE, você pode criar uma nova tabela. Em com­bi­na­ção com SQL SELECT e AS, você pode definir adi­ci­o­nal­mente que a nova tabela seja baseada nos re­sul­ta­dos da instrução SELECT, contendo assim os dados se­le­ci­o­na­dos de uma tabela existente.
  • UNION ou UNION ALL: Com o operador SQL UNION, você combina registros de tabelas e colunas se­le­ci­o­na­das em uma nova tabela de saída sem du­pli­ca­tas. Em com­bi­na­ção com o operador lógico ALL, você es­pe­ci­fica que todos os registros de uma tabela, incluindo du­pli­ca­tas, sejam con­si­de­ra­dos.
  • IMPORT TABLE: A instrução IMPORT TABLE é adequada apenas quando você deseja importar registros de tabelas e arquivos externos para uma tabela. A instrução está dis­po­ní­vel prin­ci­pal­mente em versões mais recentes do SQL.
  • LOAD DATA INFILE: A instrução funciona ba­si­ca­mente como IMPORT TABLE, mas oferece uma aplicação mais flexível, embora mais complexa, e suporta mais formatos para fontes de dados externas. Está dis­po­ní­vel em todas as versões do SQL.
Ir para o menu principal