Exploremos cómo funcionan las tablas temporales en MariaDB. Primero, tenemos que conectarnos al servidor. Por ejemplo (use sus propios datos de conexión):
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
Ahora, sólo para señalar algo, creemos una tabla estándar (permanente). Así es cómo:
CREATE TABLE t ( c INT );
Esta tabla, t
, persistirá en la base de datos incluso después de que salgamos del cliente:
exit
Cuando volvemos a conectarnos y verificamos las tablas existentes usando SHOW TABLES;
, la tabla t
seguirá apareciendo:
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
SHOW TABLES;
+----------------+ | Tables_in_demo | +----------------+ | t | +----------------+
Todo esto es bastante obvio, pero ahora recreemos esta tabla y probemos algo diferente:
CREATE OR REPLACE TEMPORARY TABLE t ( c INT );
Observe la palabra clave TEMPORARY
. Después de crear esta tabla, si ejecutamos SHOW TABLES;
, aparece en la lista. Podemos insertar datos en él, consultarlos y unirlos con otras tablas. Se comporta como una mesa normal durante la sesión actual. Sin embargo, si salimos del cliente, nos volvemos a conectar y realizamos SHOW TABLES;
Nuevamente, la tabla temporal t
no aparecerá en la lista.
Una tabla temporal solo existe mientras dura la sesión en la que se creó y otras sesiones no podrán verla.
Las tablas temporales son bastante útiles para operaciones de datos transitorios. Por ejemplo, considere una tabla llamada products
en nuestra base de datos:
CREATE TABLE products ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(100) NOT NULL, name VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY code (code) )
Podemos crear una tabla temporal que imite la estructura de products
:
CREATE TEMPORARY TABLE t LIKE products;
Podemos confirmar esto ejecutando:
DESCRIBE t;
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(100) | NO | UNI | NULL | | | name | varchar(250) | NO | | NULL | | | description | text | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+
Inicialmente, t
estará vacío. Sin embargo, supongamos que queremos transferir algunos datos de products
a t
. Supongamos que solo queremos incluir productos que contengan el número 0 en su código:
INSERT INTO t SELECT * FROM products WHERE code LIKE '%0%';
Después de ejecutar este comando, si consultamos la tabla temporal t
:
SELECT * FROM t;
+----+--------+------------------+---------------------------------------------------+ | id | code | name | description | +----+--------+------------------+---------------------------------------------------+ | 1 | BG2024 | BugBlaster | Eradicates software bugs with a single scan. | | 3 | FW001 | FireWhale | An oversized, comprehensive firewall solution. | | 4 | CLD404 | CloudNine Finder | Find your way back from cloud outages and errors. | +----+--------+------------------+---------------------------------------------------+
Vemos los datos filtrados.
Las tablas temporales ofrecen una manera poderosa de manejar datos para procesamiento temporal sin afectar el almacén de datos persistente. Son particularmente útiles en escenarios donde los datos deben manipularse o transformarse temporalmente. Puede utilizar tablas permanentes para este tipo de manipulación de datos, pero las tablas temporales son útiles cuando necesita limpieza automática, reducción del riesgo de conflictos de nombres, aislamiento y seguridad, y administración de recursos para el rendimiento de consultas.