Database
 sql >> Base de Dados >  >> RDS >> Database

Como criar uma tabela temporária em SQL?


Como criar uma tabela temporária em SQL

Introdução às tabelas temporárias
  • Tabela temporária é uma tabela usada para armazenar dados temporários que podem ser usados ​​posteriormente na mesma sessão do cliente.
  • Por padrão, a tabela temporária é removida assim que a sessão do cliente é encerrada.
  • A tabela temporária pode ser removida explicitamente usando a instrução “DROP TABLE”. Esta tabela é acessível apenas ao seu criador.
  • Mais de uma tabela temporária pode existir na mesma sessão, mas devem conter nomes diferentes se estiverem na mesma sessão. Mas se as tabelas temporárias estiverem em uma sessão diferente, as tabelas poderão existir com os mesmos nomes.
  • Tabelas temporárias podem ter o mesmo nome que as tabelas normais dentro do mesmo banco de dados. Se tal condição existir, então após a criação da tabela temporária todas as consultas executadas passarão a referenciar a tabela temporária ao invés da tabela normal. Mas uma vez que essa tabela temporária criada com o mesmo nome for removida, a tabela normal estará acessível e agora as consultas farão referência à tabela normal.
  • Criando uma tabela temporária

Sintaxe:

CREATE TEMPORARY TABLE TABLENAME (column_name1 tipo de dados (tamanho), column_name2 tipo de dados (tamanho), column_nameN tipo de dados (tamanho));

Exemplo:

Já temos um banco de dados com o nome “employeedb” e uma tabela com o nome “employee” nesse banco de dados. Agora vamos criar uma tabela temporária com o mesmo nome “employee”.
 mysql> USE employeedb;
 Database changed
 mysql> CREATE TEMPORARY TABLE employee(Emp_ID INT, Emp_Name VARCHAR(20),Emp_Salary INT);
 Query OK, 0 rows affected (0.32 sec)
 mysql> SELECT *FROM employee;
 Empty set (0.00 sec)
 mysql> INSERT INTO employee VALUES(1,"Mayuri",45000);
 Query OK, 1 row affected (0.08 sec)
 mysql> INSERT INTO employee VALUES(2,"Sakshi",50000);
 Query OK, 1 row affected (0.04 sec)
 mysql> SELECT *FROM employee;
 +--------+----------+------------+
 | Emp_ID | Emp_Name | Emp_Salary |
 +--------+----------+------------+
 |      1 | Mayuri   |      45000 |
 |      2 | Sakshi   |      50000 |
 +--------+----------+------------+
 2 rows in set (0.00 sec) 
  • Agora criamos uma nova tabela chamada "employee" no banco de dados "employeedb".
  • Então, logo após a criação da tabela temporária, quando estamos tentando recuperar os dados da tabela de funcionários, obtivemos um conjunto de resultados vazio. Isso acontece porque agora a tabela de funcionários especificada na consulta SELECT está fazendo referência à tabela temporária recém-criada “employee” e não à tabela existente “employee”.
  • Depois disso, quando executamos a consulta INSERT na tabela de funcionários, essa consulta também é operada na tabela temporária “funcionário”, pois estamos executando essa consulta após a criação da tabela temporária.
  • Eliminar uma tabela temporária

Sintaxe:
DROP TABLE TABLENAME;

Exemplo:

Agora vamos deletar uma tabela temporária chamada “employee”.
 mysql> SELECT *FROM employee;
 +--------+----------+------------+
 | Emp_ID | Emp_Name | Emp_Salary |
 +--------+----------+------------+
 |      1 | Mayuri   |      45000 |
 |      2 | Sakshi   |      50000 |
 +--------+----------+------------+
 2 rows in set (0.00 sec)
 mysql> DROP TABLE employee;
 Query OK, 0 rows affected (0.08 sec)
 mysql> SELECT *FROM employee;
 +--------+----------+------------+
 | Emp_ID | Emp_Name | Emp_Salary |
 +--------+----------+------------+
 |      1 | Mayuri   | 40000      |
 |      2 | Mayuri   | 40000      |
 |      3 | Mayuri   | 40000      |
 |      4 | Mayuri   | 40000      |
 |      5 | Mayuri   | 40000      |
 +--------+----------+------------+
 5 rows in set (0.09 sec) 
  • Quando executamos a consulta SELECT, estamos obtendo dois registros como saída porque executamos essa consulta após a criação da tabela temporária. Portanto, esta consulta SELECT é operada na tabela temporária.
  • Depois disso, executamos a consulta drop. Usando o comando DROP, a tabela de funcionários recém-criada (tabela temporária) será descartada.
  • Novamente, ao executarmos a consulta SELECT, agora ela será operada em nossa tabela de funcionários (tabela original) e não na tabela temporária, pois a tabela temporária já foi removida do banco de dados.