MySQL - Tablas temporales
Las tablas temporales pueden resultar 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.
¿Qué son las tablas temporales?
Se agregaron tablas temporales en MySQL Versión 3.23. Si usa una versión anterior de MySQL que 3.23, no puede usar las 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
El siguiente programa es un ejemplo que muestra el uso de la tabla temporal. El mismo código se puede utilizar en scripts PHP utilizando elmysql_query() función.
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 SHOW TABLEScomando, entonces su tabla temporal no aparecerá en la lista. Ahora, si cierra la sesión de MySQL y luego emitirá unSELECTcomando, entonces 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, hágalo emitiendo elDROP TABLE mando.
El siguiente programa es un ejemplo de 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