Insights que transformam sua carreira!

Receba soluções práticas, dicas que economizam tempo e insights exclusivos de programação que realmente funcionam. Junte-se a mais de 5.000 assinantes!

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.

Dê um salto na sua carreira de programação!

Receba soluções práticas, economize tempo com dicas eficazes e conquiste insights exclusivos para acelerar sua evolução na área de TI. Junte-se a mais de 5.000 desenvolvedores que já estão um passo à frente!

Quero me destacar agora!

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:

Conta Exclusiva ChatGPT: Acesso Ilimitado

Desbloqueie o poder do ChatGPT com recursos premium. Aproveite 80,5% de desconto e garantia de 100% de satisfação. Junte-se hoje e viva a melhor experiência de chat com IA!

Cypress, do Zero à Nuvem: domine a automação de testes com confiabilidade e eficiência

Aprimore suas habilidades de automação de testes com Cypress, desde o início até a integração contínua.

Saiba Mais

💻 Torne-se um Desenvolvedor Fullstack!

Domine as tecnologias mais requisitadas do mercado e conquiste sua carreira dos sonhos como Desenvolvedor Fullstack. Inscreva-se hoje!

Inscreva-se

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 employees na 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 employees e departments para 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 KEY ou 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 IGNORE ou ON CONFLICT em 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 TRIGGERS ou 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 SELECT com 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:

Gostou deste conteúdo?

Assine o E-Zine Ramos da Informática e receba semanalmente conteúdos exclusivos focados em desenvolvimento frontend, backend e bancos de dados para turbinar sua carreira tech.

📘 Conteúdo Exclusivo

Dicas, insights e guias práticos para alavancar suas habilidades em desenvolvimento e bancos de dados.

🚀 Hacks de Carreira

Ferramentas, atalhos e estratégias para se destacar e crescer rapidamente no mercado de tecnologia.

🌟 Tendências Tech

As novidades mais relevantes sobre desenvolvimento web, mobile e bancos de dados para você se manter atualizado.

Já somos mais de 5.000 assinantes! Junte-se a uma comunidade de profissionais que compartilham conhecimento e crescem juntos no universo tech.

Quero Assinar Agora

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

ArcGIS Maps JavaScript: Novidades da Versão 4.32

O ArcGIS, desenvolvido pela Esri, é uma plataforma líder...

O Novo Ramos da Informática: Menos Ruído, Mais Valor

O jogo mudou. A maneira de buscar conhecimento e...

Mais de 1 milhão de vagas em cursos e oportunidades de emprego

A Ramos da Informática trouxe um compilado de diversas...

Hackathon com premiação de US$150 mil no estádio do PSG

A Chiliz, empresa de tecnologia blockchain para esportes e entretenimento,...

Destaques do Git 2.48

O projeto Git de código aberto acaba de lançar...
Sua assinatura não pôde ser validada.
Você fez sua assinatura com sucesso.

E-Zine Ramos da Informática

Conteúdo focado em desenvolvimeto backend, frontend, banco de dados e novas tecnologias. 


📧 Não perca tempo! Assine grátis agora mesmo e leve sua carreira ao próximo nível.

Dê um salto na sua carreira de programação!

Receba soluções práticas, economize tempo com dicas eficazes e conquiste insights exclusivos para acelerar sua evolução na área de TI. Junte-se a mais de 5.000 desenvolvedores que já estão um passo à frente!