Tablas temporales de MySQL y datos de sesión

MySQLMySQLBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo trabajar con tablas temporales en MySQL, centrándose en su creación y uso dentro de una sesión. Comenzará conectándose al servidor MySQL como usuario root y creando una tabla temporal llamada temp_employees con columnas para id, name y department.

Después de crear la tabla temporal, verificará su existencia describiendo su estructura utilizando el comando DESCRIBE. Esto confirma la creación de la tabla y muestra las definiciones de sus columnas, incluyendo los tipos de datos y las restricciones. Luego, el laboratorio lo guiará a través de la inserción y consulta de datos dentro de la tabla temporal, demostrando su utilidad para la manipulación de datos específicos de la sesión. Finalmente, explorará el alcance de las tablas temporales y aprenderá cómo eliminarlas explícitamente.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/DatabaseFunctionsandDataTypesGroup(["Database Functions and Data Types"]) mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/create_table("Table Creation") mysql/BasicKeywordsandStatementsGroup -.-> mysql/drop_table("Table Removal") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/BasicKeywordsandStatementsGroup -.-> mysql/insert("Data Insertion") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/int("Integer Type") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/varchar("Variable Character Type") subgraph Lab Skills mysql/create_table -.-> lab-550917{{"Tablas temporales de MySQL y datos de sesión"}} mysql/drop_table -.-> lab-550917{{"Tablas temporales de MySQL y datos de sesión"}} mysql/select -.-> lab-550917{{"Tablas temporales de MySQL y datos de sesión"}} mysql/insert -.-> lab-550917{{"Tablas temporales de MySQL y datos de sesión"}} mysql/int -.-> lab-550917{{"Tablas temporales de MySQL y datos de sesión"}} mysql/varchar -.-> lab-550917{{"Tablas temporales de MySQL y datos de sesión"}} end

Crear una tabla temporal para uso en sesión

En este paso, aprenderá cómo crear una tabla temporal en MySQL. Las tablas temporales son útiles para almacenar resultados intermedios durante una sesión. Se eliminan automáticamente cuando la sesión finaliza. Esto las hace ideales para tareas como la manipulación de datos y la generación de informes donde se necesita un espacio de trabajo temporal.

Primero, conectémonos al servidor MySQL. Abra una terminal en la máquina virtual (VM) de LabEx. Puede usar el siguiente comando para conectarse al servidor MySQL como usuario root. Se le pedirá la contraseña de root, que es password.

mysql -u root -p

Después de ingresar la contraseña, debería ver el indicador de MySQL: mysql>.

Ahora, creemos una tabla temporal. La sintaxis para crear una tabla temporal es similar a la de crear una tabla normal, pero con la palabra clave TEMPORARY.

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

Este comando crea una tabla temporal llamada temp_employees con tres columnas: id, name y department. La columna id es una clave primaria autoincremental.

Puede verificar que la tabla se haya creado utilizando el comando SHOW TABLES. Sin embargo, SHOW TABLES no mostrará las tablas temporales. En su lugar, puede intentar describir la tabla:

DESCRIBE temp_employees;

Este comando mostrará la estructura de la tabla temp_employees, confirmando que se ha creado. La salida debería ser similar a esta:

+------------+--------------+------+-----+---------+----------------+
| 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)

Esto confirma que la tabla temporal temp_employees se ha creado exitosamente dentro de su sesión actual de MySQL.

Insertar y consultar datos de una tabla temporal

En este paso, aprenderá cómo insertar datos en la tabla temporal que creó en el paso anterior y luego consultar esos datos. Esto demostrará cómo usar tablas temporales para almacenar y recuperar información dentro de una sesión.

Continuando desde el paso anterior, debería seguir conectado al servidor MySQL con el indicador mysql>. Si no lo está, vuelva a conectarse utilizando el siguiente comando:

mysql -u root -p

Ingrese la contraseña password cuando se le solicite.

Ahora, insertemos algunos datos en la tabla temp_employees. Utilice la declaración INSERT INTO para agregar registros.

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 insertan tres filas en la tabla temp_employees, con nombres y departamentos para cada empleado.

Para verificar que los datos se hayan insertado correctamente, puede consultar la tabla utilizando la declaración SELECT.

SELECT * FROM temp_employees;

Este comando recuperará todas las columnas y filas de la tabla temp_employees. La salida debería ser similar a esta:

+----+---------------+------------+
| 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 usar la cláusula WHERE para filtrar los datos. Por ejemplo, para seleccionar solo los empleados del departamento de 'Marketing':

SELECT * FROM temp_employees WHERE department = 'Marketing';

La salida debería ser:

+----+-------------+------------+
| id | name        | department |
+----+-------------+------------+
|  2 | Bob Johnson | Marketing  |
+----+-------------+------------+
1 row in set (0.00 sec)

Esto demuestra cómo insertar datos en una tabla temporal y consultarlos utilizando comandos SQL estándar. Los datos solo estarán disponibles dentro de su sesión actual de MySQL.

Verificar el alcance de la tabla temporal

En este paso, verificará el alcance de la tabla temporal. Las tablas temporales solo son accesibles dentro de la sesión en la que se crearon. Para demostrar esto, abrirá una nueva sesión de MySQL e intentará acceder a la tabla temp_employees.

Primero, asegúrese de que todavía está conectado al servidor MySQL desde los pasos anteriores. Si es así, mantenga esa terminal abierta.

Ahora, abra una nueva ventana de terminal en la máquina virtual (VM) de LabEx. Puede hacer esto haciendo clic derecho en el escritorio y seleccionando "Abrir terminal aquí".

En esta nueva terminal, conéctese al servidor MySQL como usuario root:

mysql -u root -p

Ingrese la contraseña password cuando se le solicite. Ahora tiene dos sesiones de MySQL separadas.

En esta nueva sesión, intente seleccionar datos de la tabla temp_employees:

SELECT * FROM temp_employees;

Debería ver un mensaje de error similar a este:

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

Este mensaje de error confirma que la tabla temp_employees, creada en la primera sesión, no es visible ni accesible en esta nueva sesión. Esto se debe a que las tablas temporales son específicas de la sesión.

Ahora, intente describir la tabla:

DESCRIBE temp_employees;

También obtendrá un error:

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

Esto confirma aún más que la tabla temporal solo existe dentro de la sesión donde se creó. Cierre la nueva ventana de terminal y regrese a la terminal original donde creó la tabla temporal. Utilizará esa terminal en el siguiente paso.

Eliminar la tabla temporal

En este paso, eliminará explícitamente la tabla temporal que creó anteriormente. Si bien las tablas temporales se eliminan automáticamente al final de una sesión, es una buena práctica eliminarlas explícitamente cuando haya terminado de usarlas. Esto puede ayudar a liberar recursos y evitar posibles conflictos de nombres si necesita crear una tabla con el mismo nombre más adelante en la misma sesión.

Asegúrese de que todavía está conectado al servidor MySQL en la sesión de terminal original donde creó la tabla temp_employees. Si no lo está, vuelva a conectarse utilizando el siguiente comando:

mysql -u root -p

Ingrese la contraseña password cuando se le solicite.

Para eliminar la tabla temporal, utilice la declaración DROP TEMPORARY TABLE:

DROP TEMPORARY TABLE temp_employees;

Este comando eliminará la tabla temp_employees de su sesión actual.

Para verificar que la tabla se haya eliminado, intente seleccionar datos de ella nuevamente:

SELECT * FROM temp_employees;

Debería ver el mismo mensaje de error que en el paso anterior cuando intentó acceder a la tabla desde una sesión diferente:

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

Esto confirma que la tabla temporal se ha eliminado correctamente.

Ahora puede salir del monitor de MySQL escribiendo:

exit

Esto lo desconectará del servidor MySQL.

Resumen

En este laboratorio (lab), aprendiste cómo crear una tabla temporal dentro de una sesión de MySQL. Esto implica conectarse al servidor MySQL utilizando el comando mysql -u root -p y luego utilizar la declaración CREATE TEMPORARY TABLE para definir la estructura de la tabla, incluyendo nombres de columnas, tipos de datos y restricciones (constraints) como claves primarias y campos autoincrementales.

También aprendiste que el comando estándar SHOW TABLES no muestra las tablas temporales. En cambio, puedes verificar la creación de la tabla temporal utilizando el comando DESCRIBE para ver su estructura y confirmar las columnas definidas y sus propiedades.