Crear una tabla temporal en MySQL
En este tutorial, nuestro objetivo es explorar diferentes métodos para crear una tabla temporal en MySQL.
Una de las características clave de una tabla temporal es que es fundamental para almacenar datos provisionales. Esta función está habilitada en MySQL versión 3.23 y superior.
Estas tablas se pierden cuando el usuario abandona manualmente la tabla o la sesión finaliza.
Otra característica de una tabla temporal es que el mismo nombre de la tabla se puede utilizar en varias conexiones. Esto es posible ya que el cliente solo puede trabajar con la tabla temporal creada por él.
Hay dos formas principales de crear una tabla temporal en MySQL:
- Creación de tablas temporales básicas.
- Creación de tabla temporal a partir de la consulta
SELECT
.
Sin embargo, antes de comenzar, creamos un conjunto de datos ficticio para trabajar. Aquí creamos una tabla, student_details
, junto con algunas filas en ella.
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
La consulta anterior crea una tabla junto con filas con el nombre y apellido del estudiante. Para ver las entradas en los datos, usamos el siguiente código:
SELECT * FROM student_details;
El código anterior daría el siguiente resultado:
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Ahora, creemos una tabla temporal con el nombre students_temporary
similar a la tabla student_details
.
Crear tabla temporal básica en MySQL
Uno de los métodos más básicos para crear una tabla temporal es utilizar la palabra clave TEMPORARY
. Podemos crear una tabla temporal llamada student_details
de la siguiente manera:
-- Basic temporary table creation
CREATE TEMPORARY TABLE students_teporary(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
El código anterior crea una tabla temporal llamada students_teporary
. A continuación, insertemos algunas entradas en esta tabla con el siguiente código:
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
La salida del código mencionado anteriormente da como resultado una tabla temporal de la siguiente manera:
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Creación de una tabla temporal a partir de la consulta SELECT
Otro método para crear tablas temporales es hacer uso de la instrucción select. Este método nos ayuda a replicar una tabla completa en una tabla temporal con las mismas entidades y tipos de datos. Intentemos crear una tabla temporal students_details_temporary
utilizando la instrucción SELECT
. Podemos hacer esto con el siguiente código.
-- Replicating the students_details table
CREATE TEMPORARY TABLE IF NOT EXISTS students_details_temporary AS (SELECT * FROM students_details);
Nota: En la consulta anterior, usamos SI NO EXISTE
para asegurarnos de que no haya una tabla con el nombre student_details_temporary
en la base de datos.
El código mencionado anteriormente dará el siguiente resultado:
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Como podemos ver, se ha generado una tabla temporal con las mismas entidades y entradas que la tabla original (student_details
).
Por lo tanto, con la ayuda de los dos métodos anteriores, podemos crear una tabla temporal de manera eficiente. Esta tabla temporal se elimina tan pronto como finaliza la última conexión.