Tablas Temporales en SQLite

Bilal Shahid 21 junio 2023
  1. Crear una tabla temporal en SQLite
  2. Seleccionar de una tabla temporal en SQLite
  3. Soltar una tabla temporal en SQLite
  4. Insertar, actualizar y eliminar registros en una tabla temporal en SQLite
Tablas Temporales en SQLite

Las tablas temporales pueden ser increíblemente útiles en SQLite. Sin embargo, se sabe que son un poco difíciles de usar.

Este artículo analiza en profundidad la creación y el uso de tablas temporales en SQLite.

Crear una tabla temporal en SQLite

Crear una tabla temporal en SQLite es mucho más sencillo de lo que piensas. Es bastante similar a crear una tabla regular. El código para crear uno se muestra a continuación.

Primero, deberá crear una tabla regular porque una tabla temporal necesitará una referencia a una ya creada.

CREATE TABLE users
(
    users_id INTEGER,
    name TEXT,
    age INTEGER
);

Después de esto, puede crear una tabla temporal que copie la tabla del usuario anterior.

CREATE TEMPORARY TABLE table1
AS
(
SELECT * FROM users
);

Esto creará una tabla temporal idéntica a la tabla del usuario. Es mejor insertar algunos valores antes de crear una tabla temporal para que pueda verificar que es una copia de la tabla más reciente, y esto se puede hacer usando la cláusula INSERT INTO.

Siempre puede crear una tabla utilizando una consulta más compleja. Todo lo que tiene que hacer es reemplazar la consulta SELECT después de la cláusula AS con una consulta de su elección.

Una vez que haya terminado, su tabla temporal se creará y estará lista para usar. Tenga en cuenta que TEMP también puede reemplazar la cláusula TEMPORARY, y ambas se aceptan en SQLite.

Seleccionar de una tabla temporal en SQLite

Ahora que sabemos lo simple que es crear uno, es posible que se pregunte cómo puede seleccionarlo. Utiliza la cláusula SELECT habitual de forma idéntica, pero es mejor optar por un enfoque ligeramente diferente al de seleccionar una mesa regular o permanente.

Es mejor agregar un alias adicional utilizando la cláusula AS para tablas temporales. Aquí se muestra un ejemplo que usa la misma tabla de usuario y la tabla temporal correspondiente definida anteriormente:

SELECT 'table1'
AS from_table,* FROM table1

Esto habría funcionado si también hubieras usado SELECT * FROM table1. Sin embargo, es mejor usar este método para poder diferenciar el contenido de su tabla temporal de su tabla permanente.

Esto es especialmente útil cuando se trata de tablas con múltiples entradas. Es importante tener en cuenta que puede reemplazar el símbolo de asterisco (*) con cualquier consulta de su elección.

Usa la Cláusula Con

Otro método de selección menos común es la cláusula CON. Sin embargo, esto solo se puede usar si crea una consulta con solo una declaración de selección.

Si tiene la intención de utilizar consultas complejas, es mejor seguir el método explicado anteriormente. Puedes probar este método usando el siguiente código.

WITH table1(users_id, name,age) AS
(
   --add any one select statement
)
SELECT users_id, name,age FROM table1;

Otras cláusulas como establecer operadores, agrupar u ordenar también suelen estar disponibles para todas las tablas temporales. Se usan de la misma manera que en las tablas permanentes, ya que se ejecutarán correctamente siempre que su consulta esté bien escrita.

Soltar una tabla temporal en SQLite

En SQLite, eliminar una tabla temporal es similar a eliminar una tabla ordinaria o permanente en su base de datos. Las tablas temporales a menudo se eliminan automáticamente después de que el usuario finaliza una sesión en particular, pero siempre puede eliminarlas manualmente si lo desea.

Recuerde que debe replicar cualquier dato que desee guardar en la tabla permanente antes de soltarlo para evitar la pérdida de datos. La siguiente consulta muestra cómo eliminar una tabla temporal.

DROP TABLE temp.table1

La única diferencia aquí es que se agrega una cláusula adicional antes del nombre de la tabla. Esto significa que la tabla que se descartará es una tabla temporal.

Al eliminar una tabla temporal, a menudo es mejor agregar una cláusula SI EXISTE. Esto se debe a que es posible que la tabla se haya eliminado automáticamente sin que usted lo sepa.

Agregar esto evita errores que pueden ser difíciles de identificar en códigos más largos. Utilice el siguiente código para colocar una tabla temporal.

DROP TABLE If EXISTS temp.table1;

Insertar, actualizar y eliminar registros en una tabla temporal en SQLite

Insertar, actualizar y eliminar registros dentro de una tabla temporal es prácticamente lo mismo que una permanente. Es importante tener en cuenta que todos los datos agregados y editados se perderán después de que el usuario salga de la sesión o si caduca.

Aquí hay algunos ejemplos que puede consultar para los tres anteriores usando la misma tabla temporal creada anteriormente.

Insertar registros en una tabla temporal

INSERT INTO users(users_id, name,age)
VALUES(1, 'abc', 30);

Esto insertará con éxito los valores en su tabla temporal. Sin embargo, si tiene restricciones únicas, es posible que desee agregar las cláusulas IGNORE o REPLACE para evitar errores al ejecutarlo.

Actualizar registros en una tabla temporal

UPDATE users
SET name='xyz' WHERE users_id=3;

Esto cambiará el nombre del usuario en la tabla temporal con el id 3. Puede reemplazar el contenido después de la cláusula where con cualquier condición necesaria.

Eliminar registros en una tabla temporal

DELETE * FROM users

Esta consulta eliminará todo el contenido de la tabla temporal. Si solo desea eliminar una fila específica, debe incluir una cláusula DÓNDE como la que se muestra a continuación.

DELETE * FROM users
WHERE users_id=1

Eso es todo lo que necesita saber para comenzar a trabajar con tablas temporales. Esperamos que este artículo lo haya ayudado a comenzar y comprender cómo usarlos correctamente.

Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

Artículo relacionado - SQLite Table