Como Inserir Dados em Tabelas SQL Usando INSERT INTO com SELECT

Aprenda a usar o comando SQL INSERT INTO SELECT para inserir dados de forma eficiente. Descubra exemplos práticos e avançados, dicas, casos de uso e estratégias de otimização neste guia completo.

Compartilhe:

No universo dos bancos de dados relacionais, o comando INSERT INTO desempenha um papel crucial ao permitir a inserção de dados em tabelas. Uma das abordagens mais poderosas e versáteis para usar este comando é combiná-lo com SELECT, permitindo inserir dados de uma tabela (ou consulta) diretamente em outra. Este artigo detalha como aproveitar essa funcionalidade, explora casos de uso práticos e avança para cenários mais complexos.

O Básico do INSERT INTO SELECT

A sintaxe fundamental do comando INSERT INTO SELECT é a seguinte:

INSERT INTO table_name (column1, column2, ...)
SELECT column1, column2, ...
FROM another_table
WHERE condition;

Descrição dos elementos:

  • table_name: A tabela onde os dados serão inseridos.
  • column1, column2, ...: As colunas de destino, que devem corresponder em número e tipo aos dados selecionados.
  • another_table: A origem dos dados a serem inseridos.
  • WHERE condition: Opcional, define critérios para filtrar os dados a serem selecionados.

Exemplo Prático: Populando uma Tabela com Dados de Outra

Imagine que você tenha duas tabelas: employees e archived_employees. Sua tarefa é mover todos os funcionários inativos para a tabela de arquivamento.

Estrutura das tabelas:

Abre em nova aba

CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(100),status VARCHAR(20));CREATE TABLE archived_employees (id INT PRIMARY KEY,name VARCHAR(100));

Inserindo dados da tabela employeesna tabela archived_employees:

INSERT INTO archived_employees (id,name)
SELECT id,name
FROM employees
WHERE status='inactive';

Este comando copia todos os funcionários inativos para a tabela de arquivamento.

Casos de Uso Comuns

  1. Migração de Dados Entre Tabelas
    • Usado em ETLs para transformar e mover dados entre sistemas.
  2. Backup ou Arquivamento
    • Copiar dados antigos para uma tabela de histórico.
  3. Integração de Dados
    • Combinar informações de diferentes fontes em uma tabela central.
  4. Conversão de Estruturas
    • Reorganizar dados de uma tabela para uma nova estrutura.

Exemplos Avançados

1. Inserção com Transformação de Dados

É possível transformar os dados antes de inseri-los na tabela de destino.

Exemplo:Criar uma tabela com nomes em maiúsculas.

CREATE TABLE uppercase_employees (id INT PRIMARY KEY,name_upper VARCHAR(100));INSERT INTO uppercase_employees (id,name_upper)
SELECT id,UPPER(name)
FROM employees;

O uso da função UPPER()converte os nomes para letras maiúsculas antes da inserção.

2. Inserção Condicional com Subconsultas

Você pode usar subconsultas para condicionar a inserção de dados.

Exemplo:Inserir apenas funcionários cujos gerentes estão ativos.

INSERT INTO active_manager_employees (id,name)
SELECT e.id,e.name
FROM employees e
WHERE e.manager_id IN (SELECT id FROM employees WHERE status='active');

3. Inserção com JOIN

Combinar dados de múltiplas tabelas antes da inserção é uma técnica poderosa.

Exemplo:Criar uma tabela de relatórios contendo informações de funcionários e departamentos.

CREATE TABLE employee_reports (employee_id INT,employee_name VARCHAR(100),department_name VARCHAR(100));INSERT INTO employee_reports (employee_id,employee_name,department_name)
SELECT e.id,e.name,d.name
FROM employees e
JOIN departments d ON e.department_id=d.id;

Este comando combina dados de employeese departmentspara popular a tabela employee_reports.

4. Inserção com Funções de Janela

As funções de janela permitem cálculos avançados no SELECT.

Exemplo:Inserir o ranking de salários em uma tabela.

CREATE TABLE employee_salaries (employee_id INT,salary DECIMAL(10,2),salary_rank INT);INSERT INTO employee_salaries (employee_id,salary,salary_rank)
SELECT id,salary,RANK() OVER (ORDER BY salary DESC)
FROM employees;

A função RANK()calcula a posição do salário de cada funcionário em relação aos demais.

Dicas e Boas Práticas

  1. Validação de Tipos de Dados
    • Certifique-se de que os tipos de dados das colunas de origem e destino sejam compatíveis.
  2. Cuidados com Restrições
    • Verifique se as tabelas têm restrições,como PRIMARY KEYou FOREIGN KEY,que possam impedir a inserção.
  3. Uso de Transações
    • Para grandes volumes de dados,utilize transações para garantir consistência:
BEGIN TRANSACTION;INSERT INTO table_name
SELECT ...;COMMIT;

Testes com Cópias

  • Antes de executar o comando em produção,teste-o em tabelas de cópia para evitar perdas de dados.

Desafios e Considerações Avançadas

1. Inserções em Grandes Volumes

Ao inserir milhões de registros,pode ocorrer degradação no desempenho. Algumas estratégias incluem:

  • Dividir a inserção em lotes (BATCH INSERT).
  • Desativar índices temporariamente.
  • Usar instruções como INSERT IGNOREou ON CONFLICTem bancos de dados como MySQL e PostgreSQL,respectivamente,para evitar duplicatas.

2. Gerenciamento de Duplicatas

Evitar duplicatas ao inserir registros é essencial. No PostgreSQL:

INSERT INTO target_table (col1,col2)
SELECT col1,col2
FROM source_table
ON CONFLICT (unique_column) DO NOTHING;

3. Inserção em Várias Tabelas

Para inserir dados em múltiplas tabelas simultaneamente,use TRIGGERSou STORED PROCEDURES.

Conclusão

O comando INSERT INTO SELECTé uma ferramenta poderosa que vai além do básico,permitindo movimentar,transformar e gerenciar dados em escala. Este artigo abordou desde os fundamentos até casos avançados,como uso de funções de janela e JOINs. Dominar este comando é essencial para qualquer profissional que lida com bancos de dados,pois ele oferece flexibilidade e eficiência na manipulação de dados.

Próximos passos:

  • Pratique os exemplos no seu banco de dados.
  • Explore outros operadores e funções SQL para aprimorar suas consultas.
  • Combine INSERT INTO SELECTcom scripts e automações para casos de uso avançados.

Com isso,você estará preparado para enfrentar desafios em cenários reais!

VAI GOSTAR:O que é normalização de banco de dados?–Descubra tudo sobre a normalização de banco de dados,incluindo as explicações detalhadas da 5NF e 2NF com exemplos práticos. Aprenda como melhorar a organização e a eficiência dos seus dados e otimize seus sistemas de forma profissional.

LEITURAS COMPLEMENTARES

Aqui está uma lista de fontes confiáveis e abrangentes para aprofundar o aprendizado sobre SQL,bancos de dados e a aplicação avançada de comandos como INSERT INTO SELECT:

1. Documentação Oficial de Bancos de Dados

As documentações oficiais são sempre o melhor ponto de partida,pois apresentam detalhes completos sobre a sintaxe,funções e práticas recomendadas.

2. Livros Recomendados

Para quem gosta de se aprofundar com leitura,livros oferecem uma visão mais técnica e estruturada.

3. Ambientes Práticos

A prática é essencial para dominar SQL. Aqui estão algumas ferramentas para experimentar e executar consultas.

4. Certificações

Obter certificações pode validar seu conhecimento e abrir portas no mercado de trabalho.

  • Microsoft Certified:Azure Data Engineer Associate
  • Oracle Database SQL Certified Associate
  • Google Cloud Professional Data Engineer
  • AWS Certified Database –Specialty

VAI GOSTAR:

Compartilhe:

Ramos da Informática
Ramos da Informáticahttps://ramosdainformatica.com.br
Ramos da Informática é um hub de comunidade sobre linguagens de programação, banco de dados, DevOps, Internet das Coisas, tecnologia da indústria 4.0, Cyber Segurança e Startups.

RECENTES

Claude Sonnet 4.5: Mais Avançado para Programação e Automação

A Anthropic acaba de lançar o Claude Sonnet 4.5,...

AP2 do Google: Desenvolva Pagamentos para agentes de IA

O Google lançou o Agent Payments Protocol (AP2), um...

Curso gratuito de GitHub Copilot para devs e estudantes

A Microsoft abriu as inscrições para o primeiro Bootcamp...

Santander e a Alura oferecem 60.000 bolsas em carreira de tecnologia

Quer dar um salto na sua carreira? O Santander Imersão Digital está...

Google Tradutor desafia o Duolingo com novas ferramentas de aprendizagem de idiomas

O Google está lançando um novo recurso experimental com...

A peça que faltava para agentes de IA autônomos.

Este artigo foi originalmente publicado em: https://www.linkedin.com/newsletters/ezine-dev-ramos-da-inform%25C3%25A1tica-6947960536550526976/ A inteligência...
Newsletter semanal no LinkedIn
EZine Dev Ramos da Informática
Grandes dicas em JavaScript, Node, React, Next, Banco de Dados & IA.
Assinar grátis
Abre em nova aba
spot_img