SQL - Tablas temporales

¿Qué son las tablas temporales?

Existen RDBMS, que admiten tablas temporales. Las tablas temporales son una gran característica que le permitestore and process intermediate results utilizando las mismas funciones de selección, actualización y combinación que puede utilizar con las tablas típicas de SQL Server.

Las tablas temporales pueden ser muy útiles en algunos casos para mantener datos temporales. Lo más importante que se debe saber sobre las tablas temporales es que se eliminarán cuando finalice la sesión actual del cliente.

Las tablas temporales están disponibles en MySQL versión 3.23 en adelante. Si usa una versión anterior de MySQL a 3.23, no puede usar tablas temporales, pero puede usarheap tables.

Como se indicó anteriormente, las tablas temporales solo durarán mientras la sesión esté activa. Si ejecuta el código en un script PHP, la tabla temporal se destruirá automáticamente cuando el script termine de ejecutarse. Si está conectado al servidor de base de datos MySQL a través del programa cliente MySQL, entonces la tabla temporal existirá hasta que cierre el cliente o destruya manualmente la tabla.

Ejemplo

A continuación, se muestra un ejemplo que muestra el uso de una tabla temporal.

mysql> CREATE TEMPORARY TABLE SALESSUMMARY (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SALESSUMMARY
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SALESSUMMARY;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)

Cuando emite un comando SHOW TABLES, su tabla temporal no aparecerá en la lista. Ahora, si cierra la sesión de MySQL y luego emite un comando SELECT, no encontrará datos disponibles en la base de datos. Incluso su mesa temporal no existirá.

Dejar caer tablas temporales

De forma predeterminada, MySQL elimina todas las tablas temporales cuando se termina la conexión a la base de datos. Aún así, si desea eliminarlos en el medio, puede hacerlo emitiendo unDROP TABLE mando.

A continuación se muestra un ejemplo sobre cómo eliminar una tabla temporal.

mysql> CREATE TEMPORARY TABLE SALESSUMMARY (
   -> product_name VARCHAR(50) NOT NULL
   -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
   -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
   -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
);
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO SALESSUMMARY
   -> (product_name, total_sales, avg_unit_price, total_units_sold)
   -> VALUES
   -> ('cucumber', 100.25, 90, 2);

mysql> SELECT * FROM SALESSUMMARY;
+--------------+-------------+----------------+------------------+
| product_name | total_sales | avg_unit_price | total_units_sold |
+--------------+-------------+----------------+------------------+
| cucumber     |      100.25 |          90.00 |                2 |
+--------------+-------------+----------------+------------------+
1 row in set (0.00 sec)
mysql> DROP TABLE SALESSUMMARY;
mysql>  SELECT * FROM SALESSUMMARY;
ERROR 1146: Table 'TUTORIALS.SALESSUMMARY' doesn't exist