Tablas Temporales y Datos de Sesión en MySQL

MySQLBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a trabajar con tablas temporales en MySQL, centrándose en su creación y uso dentro de una única sesión. Comenzará conectándose al servidor MySQL y creando una tabla temporal llamada temp_employees.

A lo largo del laboratorio, insertará datos en esta tabla, la consultará para recuperar información y explorará su ámbito específico de sesión intentando acceder a ella desde una sesión diferente. Finalmente, aprenderá a eliminar explícitamente una tabla temporal y comprenderá su proceso de limpieza automática. Este laboratorio le proporcionará una comprensión práctica de cómo se pueden utilizar las tablas temporales para la manipulación de datos específica de la sesión.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 95% por parte de los estudiantes.

Conectar a MySQL y Crear una Tabla Temporal

En este paso, se conectará al servidor MySQL y creará su primera tabla temporal. Las tablas temporales son tablas especiales que existen solo durante la duración de una única sesión de cliente. Se eliminan automáticamente cuando finaliza la sesión, lo que las hace útiles para almacenar resultados intermedios o datos que solo se necesitan durante un corto período de tiempo.

Primero, abra una terminal en la VM de LabEx. Conéctese al servidor MySQL como usuario root utilizando el siguiente comando.

sudo mysql -u root

Después de ejecutar el comando, debería ver el prompt de MySQL, que se parece a mysql>. Esto indica que está conectado exitosamente al servidor MySQL y ahora puede ejecutar comandos SQL.

Antes de crear la tabla, necesita seleccionar una base de datos. Utilizaremos la base de datos test, que está disponible por defecto para pruebas. Si no existe, el siguiente comando la creará.

CREATE DATABASE IF NOT EXISTS test;
USE test;

A continuación, cree una tabla temporal llamada temp_employees. La sintaxis es similar a la creación de una tabla regular, pero debe incluir la palabra clave TEMPORARY.

Ejecute el siguiente comando SQL en el prompt mysql>:

CREATE TEMPORARY TABLE temp_employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    department VARCHAR(255)
);

Este comando crea una tabla temporal con tres columnas:

  • id: Un entero que sirve como clave primaria y se incrementa automáticamente para cada nueva fila.
  • name: Una cadena de texto (hasta 255 caracteres) para almacenar el nombre de un empleado.
  • department: Una cadena de texto (hasta 255 caracteres) para almacenar el departamento de un empleado.

Para confirmar que la tabla temporal se creó exitosamente dentro de su sesión actual, utilice el comando DESCRIBE.

DESCRIBE temp_employees;

La salida mostrará la estructura de la tabla temp_employees, confirmando sus columnas y tipos de datos:

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int          | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255) | YES  |     | NULL    |                |
| department | varchar(255) | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

Esta salida confirma que la tabla temp_employees está lista para ser utilizada en su sesión actual de MySQL.

Insertar y Consultar Datos en la Tabla Temporal

Ahora que ha creado la tabla temp_employees, puede interactuar con ella como si fuera una tabla regular. En este paso, insertará datos en ella y luego consultará esos datos.

Debería seguir en la sesión de MySQL del paso anterior, con el prompt mysql> visible.

Insertemos algunas filas de datos en la tabla temp_employees utilizando la sentencia INSERT INTO. Ejecute estos comandos uno por uno:

INSERT INTO temp_employees (name, department) VALUES ('Alice Smith', 'Sales');
INSERT INTO temp_employees (name, department) VALUES ('Bob Johnson', 'Marketing');
INSERT INTO temp_employees (name, department) VALUES ('Charlie Brown', 'IT');

Estos comandos añaden tres registros de empleados a su tabla temporal.

Para ver los datos que acaba de insertar, utilice la sentencia SELECT. El asterisco (*) es un comodín que significa "todas las columnas".

SELECT * FROM temp_employees;

Este comando recupera todas las columnas y filas de la tabla temp_employees. La salida debería mostrar los datos que insertó:

+----+---------------+------------+
| id | name          | department |
+----+---------------+------------+
|  1 | Alice Smith   | Sales      |
|  2 | Bob Johnson   | Marketing  |
|  3 | Charlie Brown | IT         |
+----+---------------+------------+
3 rows in set (0.00 sec)

También puede filtrar los resultados utilizando una cláusula WHERE. Por ejemplo, para encontrar solo los empleados del departamento de 'IT', ejecute la siguiente consulta:

SELECT name FROM temp_employees WHERE department = 'IT';

La salida mostrará solo el nombre del empleado que cumple la condición:

+---------------+
| name          |
+---------------+
| Charlie Brown |
+---------------+
1 row in set (0.00 sec)

Esto demuestra que las operaciones estándar de manipulación y consulta de datos funcionan como se espera en las tablas temporales.

Comprender el Ámbito de las Tablas Temporales

Una característica clave de las tablas temporales es su ámbito específico de sesión. Esto significa que una tabla temporal creada en una sesión de MySQL no es visible ni accesible en otra, incluso si ambas sesiones están conectadas a la misma base de datos. Este paso demostrará este comportamiento.

Mantenga su sesión actual de MySQL abierta en la primera ventana de terminal.

Ahora, abra una nueva ventana de terminal. Puede hacerlo haciendo clic derecho en el fondo del escritorio y seleccionando "Abrir Terminal Aquí".

En esta nueva terminal, conéctese nuevamente al servidor MySQL. Esto creará una segunda sesión independiente.

sudo mysql -u root

Después de ejecutar el comando, debería ver el prompt de MySQL, que se parece a mysql>. Esto indica que está conectado exitosamente al servidor MySQL y ahora puede ejecutar comandos SQL.

A continuación, seleccione la base de datos test.

USE test;

Ahora tiene dos terminales separadas, cada una con su propia sesión de MySQL. En esta nueva sesión, intente consultar la tabla temp_employees que creó en la primera sesión:

SELECT * FROM temp_employees;

Recibirá un mensaje de error porque esta sesión no tiene conocimiento de la tabla temporal creada en la otra sesión.

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Este error confirma que la tabla temp_employees está aislada a la sesión en la que se creó. También puede intentar describir la tabla, lo que resultará en el mismo error.

DESCRIBE temp_employees;
ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Este comportamiento es fundamental para el funcionamiento de las tablas temporales y es lo que las hace seguras para almacenar datos temporales sin interferir con otros usuarios o procesos.

Ahora puede cerrar esta nueva ventana de terminal y volver a su terminal original.

Eliminar la Tabla Temporal y Finalizar la Sesión

Las tablas temporales se eliminan automáticamente cuando finaliza la sesión de MySQL. Sin embargo, también puede eliminar una explícitamente utilizando la sentencia DROP TEMPORARY TABLE. Es una buena práctica si ha terminado con la tabla antes de que finalice su sesión, ya que libera recursos.

Debería haber vuelto a su ventana de terminal original, donde existe la tabla temp_employees.

Para eliminar explícitamente la tabla temporal, utilice el siguiente comando en el prompt mysql>:

DROP TEMPORARY TABLE temp_employees;

Después de una eliminación exitosa, verá un mensaje Query OK. Para confirmar que la tabla ha sido eliminada, intente consultarla de nuevo:

SELECT * FROM temp_employees;

Ahora debería recibir el error "Table doesn't exist", confirmando que la tabla ya no está disponible en esta sesión.

ERROR 1146 (42S02): Table 'test.temp_employees' doesn't exist

Finalmente, para finalizar su sesión de MySQL, escriba exit y presione Enter.

exit

Esto cerrará la conexión al servidor MySQL y le devolverá al prompt de la terminal normal. Si no hubiera eliminado explícitamente la tabla temporal, se habría eliminado automáticamente en este punto.

Resumen

En este laboratorio, ha aprendido los fundamentos del trabajo con tablas temporales en MySQL. Se conectó exitosamente al servidor MySQL, creó una tabla temporal usando CREATE TEMPORARY TABLE y la pobló con datos usando INSERT INTO. Luego practicó la recuperación de estos datos con consultas SELECT.

Fundamentalmente, exploró el ámbito específico de sesión de las tablas temporales al demostrar que son invisibles para otras sesiones. Finalmente, aprendió cómo eliminar explícitamente una tabla temporal con DROP TEMPORARY TABLE y comprendió que se limpian automáticamente cuando finaliza una sesión. Las tablas temporales son una herramienta valiosa para gestionar datos específicos de sesión y resultados intermedios en sus flujos de trabajo de bases de datos.