SQL

Tabelas Temporárias

As tabelas temporárias são estruturas de dados criadas em tempo de execução e utilizadas para armazenar informações de forma provisória durante uma sessão de banco de dados. Elas são úteis quando é necessário manipular ou processar dados intermediários sem que esses resultados precisem ficar disponíveis permanentemente.

No MySQL, as tabelas temporárias são visíveis apenas para a conexão que as criou e são automaticamente descartadas ao encerrar a sessão, evitando a necessidade de exclusão manual.

Estrutura de uma Tabela Temporária

A sintaxe básica para criação de uma tabela temporária é:

CREATE TEMPORARY TABLE nome_temporario (
  coluna1 TIPO,
  coluna2 TIPO,
  ...
);

Após criada, a tabela temporária pode ser manipulada como qualquer outra tabela: é possível inserir, consultar, atualizar ou excluir dados.

Características Importantes

  • Escopo da sessão: a tabela existe apenas para a conexão que a criou.
  • Nome: pode ter o mesmo nome de uma tabela permanente, sem conflito, pois o MySQL prioriza a tabela temporária na conexão atual.
  • Descarte automático: é eliminada quando a sessão é encerrada, mas também pode ser removida manualmente com DROP TEMPORARY TABLE.

Criando Tabelas Temporárias a partir de um SELECT

Uma das formas mais comuns de gerar tabelas temporárias é a partir de uma consulta SQL já existente. Nesse caso, usa-se a sintaxe:

CREATE TEMPORARY TABLE nome_temporario
AS
SELECT ...
FROM ...
WHERE ...;

Esse comando cria a tabela temporária com as colunas e os dados retornados pela consulta. Vejamos um exemplo prático, onde queremos calcular a soma das vendas por cliente:

CREATE TEMPORARY TABLE temp_totais
AS
SELECT cliente_id, SUM(valor) AS total
FROM vendas
GROUP BY cliente_id;

SELECT * FROM temp_totais;

Agora temos uma tabela temporária temp_totais contendo os resultados já agregados, que podem ser reutilizados em consultas posteriores na mesma sessão.

Se precisarmos apenas da estrutura (sem dados), podemos limitar a consulta para retornar nada, mas manter o esquema de colunas:

CREATE TEMPORARY TABLE temp_vazia AS SELECT cliente_id, SUM(valor) AS total FROM vendas WHERE 1=0;

Esse padrão é útil para criar rapidamente tabelas de trabalho com a mesma estrutura de consultas já existentes.

Exemplos Práticos Adicionais

Uso básico

CREATE TEMPORARY TABLE temp_vendas (
  produto VARCHAR(100),
  quantidade INT,
  total DECIMAL(10,2)
);

INSERT INTO temp_vendas (produto, quantidade, total)
VALUES ('Livro A', 3, 90.00),
       ('Livro B', 2, 120.00);

SELECT * FROM temp_vendas;

Reutilização em múltiplos passos

CREATE TEMPORARY TABLE temp_estoque
AS
SELECT id AS produto_id, quantidade
FROM produtos
WHERE quantidade < 10;

UPDATE temp_estoque
SET quantidade = quantidade + 5;

Nesse exemplo, criamos a tabela diretamente do SELECT e depois aplicamos atualizações nos dados intermediários.

Tabelas Temporárias x Views

Tabelas temporárias armazenam dados físicos durante a sessão, podendo ser modificadas. Views são consultas salvas que não armazenam dados, apenas representam uma forma de acessar informações existentes.

Portanto, escolha a tabela temporária quando for necessário persistir resultados intermediários por um curto período.

As tabelas temporárias são poderosas para otimizar consultas complexas, organizar cálculos intermediários e evitar poluir o esquema principal com tabelas auxiliares permanentes. Entretanto, devem ser usadas com cautela: criar muitas tabelas temporárias pode consumir memória e impactar a performance.