viernes, 15 de enero de 2021

Tablas temporales en SQL SERVER

Buenas noches queridos lectores, el día de hoy veremos un tema útil acerca de las tablas temporales.

Las tablas temporales, son tablas que son escritas en la base de datos tempdb, solo permanecen en memoria, mientras la instancia esta activa o se limpia la caché, es importante eliminar las tablas temporales cuando ya no las estemos utilizando para liberar memoria, pues bien comencemos a hacer tablas temporales que es lo que nos gusta y como aprendemos


Generalmente la tabla temporal se utiliza para manipular los datos de una tabla real, pero sin manipular la real, es decir, se copia la información de una tabla real a una temporal y se manipulan los datos de la temporal, otro ejemplo lo podemos ver en algún ciclo donde utilicemos la tabla temporal, pero vemos los ejemplos

--1.CREAMOS LA BASE DE PRUEBAS

CREATE DATABASE PRUEBAS

GO

--2. USAMOS LA BASE DE PRUEBAS

USE PRUEBAS

GO

--3. CREAMOS LA TABLA FISICA DE PERSONAS

CREATE TABLE PERSONAS(

ID INT PRIMARY KEY IDENTITY,

NOMBRES VARCHAR(100),

APELLIDOP VARCHAR(100),

APELLIDOM VARCHAR(100))

--4. LLENAMOS LA TABLA

INSERT INTO PERSONAS (NOMBRES, APELLIDOP, APELLIDOM) VALUES ('EMMANUEL', 'URIAS', 'ROBLES')

INSERT INTO PERSONAS (NOMBRES, APELLIDOP, APELLIDOM) VALUES ('LUIS', 'GONZALES', 'HERNANDEZ')

INSERT INTO PERSONAS (NOMBRES, APELLIDOP, APELLIDOM) VALUES ('IVAN', 'VERA', 'RAMIREZ')


Una vez que tenemos nuestra tabla de Prueba llamada Personas con datos, vamos ahora a crear la tabla temporal para manipular los datos de esa tabla, sin afectar los datos de la tabla Personas real


--5. CREAMOS Y LLENAMOS LA TABLA TEMPORAL

SELECT *

INTO #PERSONAS_TEMP

FROM PERSONAS

go


Las tablas temporales se crean con el símbolo numeral (#) o (gato) seguido del nombre de la tabla, en este caso la tabla se llama #Personas_temp y mediante ese select se va a llenar la tabla temporal con los datos que tenga la tabla Personas


SELECT * FROM PERSONAS



Como vemos, esos son los datos en la tabla Personas, si ejecutamos la misma consulta de select pero a la tabla temporal obtendremos el mismo resultado


SELECT * FROM #PERSONAS_TEMP



Esta tabla se encuentra en la base de datos llama tempdb, que se encuentra en nuestra instancia



Como vemos en la imagen, esa tabla temporal se encuentra en la base de datos tempdb y estará ahí mientras no se detenga la instancia, se reinicie la máquina o se borre mediante la sentencia DROP.

Podemos manipular la tabla temporal, con inserts, deletes o update y la tabla original no sufrirá ningún cambio.

Existen dos tipos de tablas temporales:

  • Locales: solo existen en la base de datos donde se creo
  • Globales, que estarán disponibles en cualquier base de datos, en este caso la tabla deberá contener dos numerales (##) seguido del nombre de la tabla

Para comprobar el acceso a las tablas globales, crearemos una nueva tabla temporal

SELECT *

INTO ##PERSONAS_TEMP

FROM PERSONAS

go


Como vemos, tiene doble numeral, porque será de acceso global.

Ahora desde la base de datos master, daremos select a la tabla temporal global


SELECT * FROM ##PERSONAS_TEMP


Y el resultado que obtendremos es el mismo, como si estuviéramos ejecutando la consulta desde la base de datos de prueba

Es importante eliminar las tablas temporales cuando ya no las usemos, pues es espacio que se queda en memoria

DROP TABLE #PERSONAS_TEMP

GO

DROP TABLE ##PERSONAS_TEMP


Hasta aquí el post, espero que haya sido de su agrado y utilidad. Cualquier cosa pregunten, espero compartan, comenten y por favor den un clic a los anuncios patrocinados.

Saludos

No hay comentarios.:

Publicar un comentario

Select SQL en Excel

  Buenas noches queridos lectores, el día de hoy veremos como devolver una consulta de SQL SERVER en una hoja de Excel para poder visualizar...