Tabelas Temporárias e Dados de Sessão no MySQL

MySQLBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a trabalhar com tabelas temporárias no MySQL, focando na sua criação e uso dentro de uma única sessão. Você começará conectando-se ao servidor MySQL e criando uma tabela temporária chamada temp_employees.

Ao longo do laboratório, você inserirá dados nesta tabela, consultará para recuperar informações e explorará seu escopo específico de sessão tentando acessá-la de uma sessão diferente. Finalmente, você aprenderá como remover explicitamente uma tabela temporária e entenderá seu processo de limpeza automática. Este laboratório fornecerá uma compreensão prática de como as tabelas temporárias podem ser usadas para manipulação de dados específica da sessão.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Recebeu uma taxa de avaliações positivas de 95% dos estudantes.

Conectar ao MySQL e Criar uma Tabela Temporária

Nesta etapa, você se conectará ao servidor MySQL e criará sua primeira tabela temporária. Tabelas temporárias são tabelas especiais que existem apenas durante a duração de uma única sessão do cliente. Elas são automaticamente descartadas quando a sessão termina, tornando-as úteis para armazenar resultados intermediários ou dados que são necessários apenas por um curto período.

Primeiro, abra um terminal na VM LabEx. Conecte-se ao servidor MySQL como o usuário root usando o seguinte comando.

sudo mysql -u root

Após executar o comando, você deverá ver o prompt do MySQL, que se parece com mysql>. Isso indica que você está conectado com sucesso ao servidor MySQL e pode agora executar comandos SQL.

Antes de criar a tabela, você precisa selecionar um banco de dados. Usaremos o banco de dados test, que está disponível por padrão para testes. Se ele não existir, o seguinte comando o criará.

CREATE DATABASE IF NOT EXISTS test;
USE test;

Em seguida, crie uma tabela temporária chamada temp_employees. A sintaxe é semelhante à criação de uma tabela regular, mas você deve incluir a palavra-chave TEMPORARY.

Execute o seguinte comando SQL no prompt mysql>:

CREATE TEMPORARY TABLE temp_employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    department VARCHAR(255)
);

Este comando cria uma tabela temporária com três colunas:

  • id: Um inteiro que serve como chave primária e se auto-incrementa para cada nova linha.
  • name: Uma string (até 255 caracteres) para armazenar o nome de um funcionário.
  • department: Uma string (até 255 caracteres) para armazenar o departamento de um funcionário.

Para confirmar que a tabela temporária foi criada com sucesso dentro da sua sessão atual, use o comando DESCRIBE.

DESCRIBE temp_employees;

A saída exibirá a estrutura da tabela temp_employees, confirmando suas colunas e tipos de dados:

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int          | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255) | YES  |     | NULL    |                |
| department | varchar(255) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

Esta saída confirma que a tabela temp_employees está pronta para uso em sua sessão MySQL atual.

Inserir e Consultar Dados na Tabela Temporária

Agora que você criou a tabela temp_employees, pode interagir com ela como faria com uma tabela regular. Nesta etapa, você inserirá dados nela e, em seguida, consultará esses dados.

Você ainda deve estar na sessão do MySQL da etapa anterior, com o prompt mysql> visível.

Vamos inserir algumas linhas de dados na tabela temp_employees usando a instrução INSERT INTO. Execute estes comandos um por um:

INSERT INTO temp_employees (name, department) VALUES ('Alice Smith', 'Sales');
INSERT INTO temp_employees (name, department) VALUES ('Bob Johnson', 'Marketing');
INSERT INTO temp_employees (name, department) VALUES ('Charlie Brown', 'IT');

Estes comandos adicionam três registros de funcionários à sua tabela temporária.

Para visualizar os dados que você acabou de inserir, use a instrução SELECT. O asterisco (*) é um curinga que significa "todas as colunas".

SELECT * FROM temp_employees;

Este comando recupera todas as colunas e linhas da tabela temp_employees. A saída deve mostrar os dados que você inseriu:

+----+---------------+------------+
| id | name          | department |
+----+---------------+------------+
|  1 | Alice Smith   | Sales      |
|  2 | Bob Johnson   | Marketing  |
|  3 | Charlie Brown | IT         |
+----+---------------+------------+
3 rows in set (0.00 sec)

Você também pode filtrar os resultados usando uma cláusula WHERE. Por exemplo, para encontrar apenas os funcionários do departamento 'IT', execute a seguinte consulta:

SELECT name FROM temp_employees WHERE department = 'IT';

A saída mostrará apenas o nome do funcionário que corresponde à condição:

+---------------+
| name          |
+---------------+
| Charlie Brown |
+---------------+
1 row in set (0.00 sec)

Isso demonstra que as operações padrão de manipulação e consulta de dados funcionam como esperado em tabelas temporárias.

Compreender o Escopo da Tabela Temporária

Uma característica fundamental das tabelas temporárias é o seu escopo específico da sessão. Isso significa que uma tabela temporária criada em uma sessão MySQL não é visível ou acessível em outra, mesmo que ambas as sessões estejam conectadas ao mesmo banco de dados. Esta etapa demonstrará esse comportamento.

Mantenha sua sessão MySQL atual aberta na primeira janela do terminal.

Agora, abra uma nova janela de terminal. Você pode fazer isso clicando com o botão direito do mouse no fundo da área de trabalho e selecionando "Abrir Terminal Aqui".

Neste novo terminal, conecte-se ao servidor MySQL novamente. Isso criará uma segunda sessão independente.

sudo mysql -u root

Após executar o comando, você deverá ver o prompt do MySQL, que se parece com mysql>. Isso indica que você está conectado com sucesso ao servidor MySQL e pode agora executar comandos SQL.

Em seguida, selecione o banco de dados test.

USE test;

Agora você tem dois terminais separados, cada um com sua própria sessão MySQL. Nesta nova sessão, tente consultar a tabela temp_employees que você criou na primeira sessão:

SELECT * FROM temp_employees;

Você receberá uma mensagem de erro porque esta sessão não tem conhecimento da tabela temporária criada na outra sessão.

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Este erro confirma que a tabela temp_employees está isolada à sessão em que foi criada. Você também pode tentar descrever a tabela, o que resultará no mesmo erro.

DESCRIBE temp_employees;
ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Esse comportamento é fundamental para o funcionamento das tabelas temporárias e é o que as torna seguras para armazenar dados temporários sem interferir com outros usuários ou processos.

Você pode agora fechar esta nova janela de terminal e retornar ao seu terminal original.

Excluir a Tabela Temporária e Encerrar a Sessão

As tabelas temporárias são automaticamente removidas quando a sessão MySQL termina. No entanto, você também pode removê-las explicitamente usando a instrução DROP TEMPORARY TABLE. Esta é uma boa prática se você terminou de usar a tabela antes que sua sessão termine, pois libera recursos.

Você deve estar de volta à sua janela de terminal original, onde a tabela temp_employees existe.

Para remover explicitamente a tabela temporária, use o seguinte comando no prompt mysql>:

DROP TEMPORARY TABLE temp_employees;

Após uma remoção bem-sucedida, você verá uma mensagem Query OK. Para confirmar que a tabela foi removida, tente consultá-la novamente:

SELECT * FROM temp_employees;

Agora você deverá receber o erro "Table doesn't exist", confirmando que a tabela não está mais disponível nesta sessão.

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Finalmente, para encerrar sua sessão MySQL, digite exit e pressione Enter.

exit

Isso fechará a conexão com o servidor MySQL e o retornará ao prompt normal do terminal. Se você não tivesse removido explicitamente a tabela temporária, ela teria sido automaticamente removida neste ponto.

Resumo

Neste laboratório, você aprendeu os fundamentos de como trabalhar com tabelas temporárias no MySQL. Você se conectou com sucesso ao servidor MySQL, criou uma tabela temporária usando CREATE TEMPORARY TABLE e a preencheu com dados usando INSERT INTO. Em seguida, praticou a recuperação desses dados com consultas SELECT.

Crucialmente, você explorou o escopo específico da sessão das tabelas temporárias, demonstrando que elas são invisíveis para outras sessões. Finalmente, você aprendeu como remover explicitamente uma tabela temporária com DROP TEMPORARY TABLE e entendeu que elas são automaticamente limpas quando uma sessão termina. Tabelas temporárias são uma ferramenta valiosa para gerenciar dados específicos da sessão e resultados intermediários em seus fluxos de trabalho de banco de dados.