sql >> Base de Datos >  >> RDS >> Database

¿Cómo crear una tabla temporal en SQL?

Cómo crear una tabla temporal en SQL

Introducción a las tablas temporales

  • La tabla temporal es una tabla que se usa para almacenar datos temporales que se pueden usar más en la misma sesión del cliente.
  • De forma predeterminada, la tabla temporal se elimina una vez que finaliza la sesión del cliente.
  • La tabla temporal se puede eliminar explícitamente mediante la instrucción "DROP TABLE". Solo su creador puede acceder a esta tabla.
  • Puede existir más de una tabla temporal en la misma sesión, pero deben contener nombres diferentes si están en la misma sesión. Pero si las tablas temporales están en una sesión diferente, entonces las tablas pueden existir con los mismos nombres.
  • Las tablas temporales pueden tener el mismo nombre que las tablas normales dentro de la misma base de datos. Si existe tal condición, luego de la creación de la tabla temporal, todas las consultas ejecutadas ahora harán referencia a la tabla temporal en lugar de a la tabla normal. Pero una vez que se elimina esta tabla temporal creada con el mismo nombre, se puede acceder a la tabla normal y ahora las consultas harán referencia a la tabla normal.
  • Crear una tabla temporal

Sintaxis:

CREATE TEMPORARY TABLE TABLENAME (tipo de datos nombre_columna1 (tamaño), tipo de datos nombre_columna2 (tamaño), tipo de datos nombre_columnaN (tamaño));

Ejemplo:

Ya tenemos una base de datos con el nombre "empleadob" y una tabla con el nombre "empleado" en esa base de datos. Ahora crearemos una tabla temporal con el mismo nombre "empleado".

 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) 
  • Ahora hemos creado una nueva tabla denominada "empleado" en la base de datos "empleadob".
  • Entonces, justo después de la creación de la tabla temporal cuando intentamos recuperar los datos de la tabla de empleados, obtuvimos un conjunto de resultados vacío. Esto sucede porque ahora la tabla de empleados especificada en la consulta SELECT hace referencia a la tabla temporal recién creada "empleado" y no a la tabla existente "empleado".
  • Después de eso, cuando ejecutamos la consulta INSERT en la tabla de empleados, esta consulta también se opera en la tabla temporal "empleado" porque estamos ejecutando esta consulta después de la creación de la tabla temporal.
  • Soltar una tabla temporal

Sintaxis:

DROP TABLE TABLENAME;

Ejemplo:

Ahora eliminaremos una tabla temporal llamada "empleado".

 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) 
  • Cuando ejecutamos la consulta SELECT, obtenemos dos registros como salida porque ejecutamos esta consulta después de la creación de la tabla temporal. Entonces, esta consulta SELECT se opera en la tabla temporal.
  • Después de eso, hemos ejecutado la consulta de eliminación. Usando el comando DROP, la tabla de empleados recién creada (tabla temporal) se eliminará.
  • Nuevamente, cuando ejecutamos la consulta SELECT, ahora se operará en nuestra tabla de empleados (tabla original), no en la tabla temporal porque la tabla temporal ya se eliminó de la base de datos.