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.