En este tutorial, analizaremos las tablas y vistas temporales de SQL . Estos dos pueden ser útiles si desea obtener un conjunto específico de datos de una tabla física para realizar pruebas y depuración. También hablaremos sobre los 2 tipos de tablas temporales y sus diferencias.
Con las tablas y vistas temporales de SQL, puede manipular libremente el conjunto de datos usando múltiples comandos sin consultarlo repetidamente, ya que ya está almacenado en una tabla separada.
Aunque estos dos funcionan de manera similar, debe tomar nota de sus diferencias. Eso lo ayudará a decidir el mejor método que puede usar en una situación específica.
Según el nombre en sí, las tablas temporales se utilizan para almacenar datos temporalmente en una sesión.
También podemos hacer múltiples operaciones sobre ellos al igual que en una mesa física . Imagine que tiene un comando SQL que es muy largo. Simplemente puede poner eso en una tabla temporal y comenzar a depurar o solucionar los errores sin afectar la consulta original. Además, las tablas temporales son poderosas y se usan con frecuencia en SQL.
Tabla de contenido
Dos tipos de tablas temporales en SQL
Hay 2 tipos de tablas temporales en SQL. Estas son las tablas temporales locales y globales.
Las tablas temporales locales solo existen en una sesión en la que se crearon. No podremos acceder a esta tabla en otras sesiones. Debido a esto, las tablas temporales locales ya no existirán una vez que se cierre la sesión en la que se crearon.
Por el contrario, las tablas temporales globales son accesibles en todas las sesiones cuando se crean. Pero una vez que se cierren todas las sesiones, ya no existirá y ya no será accesible.
Tenga en cuenta que simplemente puede identificar qué tipo de tabla temporal se está utilizando en una consulta marcando el símbolo " # " para local y " ## " para la tabla temporal global.

Las tablas temporales locales generalmente comienzan con " # " en su nombre de tabla.

Por otro lado, las tablas temporales globales comienzan con " ## " antes del nombre de la tabla.

Además, si desea crear rápidamente cualquier tabla, puede seguir el comando: SELECT * INTO #customers FROM dbo.courses como ejemplo.

Este comando creará una nueva tabla temporal llamada #clientes con todos los datos de la tabla dbo.courses .
Vistas en Microsoft SQL Server Management Studio
Analicemos ahora las vistas de SQL con este comando de muestra.

Digamos, por ejemplo, que no queremos ejecutar repetidamente un comando como este. Simplemente puede ponerlo en una vista siguiendo el comando a continuación.

Crear una vista es similar a crear tablas. Usar esto nos permitirá ejecutar la consulta que ingresamos al seleccionar el nombre de la vista que hemos creado. En este caso, es CustomersbyYear_v .

Es importante tener en cuenta que las vistas son diferentes de las tablas temporales. Esto se debe a que las vistas son visibles en su base de datos como una tabla física a menos que la elimine. Además, las vistas no almacenan ningún dato o valor.
En su lugar, solo representará el comando que ingresó justo después del comando CREAR VISTA . También puede ejecutar cualquier operación de tabla en las vistas.
Lo que es más importante, podemos identificar fácilmente las vistas, ya que generalmente se representan poniendo "v" al principio o al final del nombre de la vista.
Creación de tablas y vistas temporales en SQL
Para este ejemplo, tengo esta consulta que combinará y mostrará los registros de Sales.SalesOrderHeader y Sales.Customer C después de ejecutarla.


Creación de tablas temporales locales en SQL
Imagine que ha escrito una consulta de 200 líneas y necesita depurar y realizar ciertas operaciones en ella. No puede editar directamente la consulta , ya que podría causar más errores durante el proceso.
En ese caso, usando el ejemplo anterior, vamos a crear una tabla temporal local agregando el comando “ INTO #test_local ” antes del comando FROM.

Una vez que ejecutemos este comando, #test_local ahora contendrá los registros combinados de Sales.SalesOrderHeader y Sales.Customer C . Como resultado, esto es lo que verá cuando seleccione la tabla #test_local .

Después de eso, ahora podemos realizar cualquier operación en la tabla #test_local . Seleccionaremos todos los registros de #test_local y luego cambiaremos el orden de los registros por CustomerID usando el siguiente comando.

Como resultado, los registros ahora se ordenan por su CustomerID. Pero como usamos una tabla temporal local, no podemos acceder ni usar la tabla #test_local en una sesión diferente. El siguiente ejemplo muestra lo que sucederá si intentamos acceder a #test_local en SQLQuery2.sql .

Basado en el ejemplo anterior, al seleccionar #test_local , solo mostraba un mensaje de error. Esto se debe a que la tabla #test_local solo existe en la sesión en la que se creó, que es SQLQuery1.sql .
Creación de tablas temporales globales en SQL
A continuación, usaremos la misma consulta que usamos en #test_local . Pero esta vez, usaremos una global .

Ahora, si seleccionamos ##test_global y ordenamos los registros por CustomerID, mostrará el mismo resultado que teníamos en #test_local ya que usamos la misma consulta.

Después de eso, intentaremos acceder a la tabla ##test_global en una sesión diferente seleccionándola. Esto funciona a la perfección ya que estamos utilizando una tabla temporal global.

En este punto, destacamos la diferencia entre tablas temporales locales y globales.
Recuerde que las tablas temporales locales solo son accesibles en una sesión en la que se crearon . Una vez que cierres esa sesión, ya no existirá.
Por otro lado, las tablas temporales globales son visibles para todas las sesiones , a menos que cierre todas las sesiones activas o la propia aplicación.
Creación de vistas en SQL
Ahora vamos a crear una vista. En este ejemplo, tenemos una consulta existente como esta.

Podemos comenzar a crear una vista agregando el comando CREAR VISTA a esa consulta.

Al ejecutar el comando, se creará una vista en la base de datos en la que estamos trabajando. En este caso, es AdventureWorks2012 .
También deberíamos ver el dbo.CustomerView_v en la carpeta Vistas después de actualizarlo. Para actualizar la carpeta Vistas, haga clic derecho sobre ella y luego seleccione Actualizar .

Haga clic en el ícono + a la derecha de la carpeta Vistas y el dbo.CustomerView_v estará visible.

Puede abrir esta vista haciendo clic con el botón derecho en dbo.CustomerView_v y luego elija Seleccionar las 1000 filas principales de las opciones. Esto mostrará 1000 registros en esa vista .

Después de esto, ahora podemos usar dbo.CustomerView_v y realizar cualquier operación en él como si fuera una tabla. Por ejemplo, queremos seleccionar los registros con SalesOrderID mayor que 50000 en dbo.CustomerView_v . En este caso, usaremos el siguiente comando.

Ahora podemos ejecutar una operación en la vista que hemos creado.
Conclusión
En resumen, hemos aprendido los 2 tipos de tablas temporales junto con sus diferencias y por qué necesitamos usarlas. Además, hemos discutido que las tablas temporales sirven como una forma de corregir errores en sus consultas sin dañar la consulta real.
Tenga en cuenta que las tablas temporales solo son visibles para las sesiones en las que se crearon. Por lo tanto, dejará de existir una vez que hayamos cerrado las sesiones activas o la propia aplicación.
También hemos aprendido que las vistas no almacenan datos ni registros. Solo muestra resultados basados en la consulta que desea procesar. Estas vistas se almacenan en nuestra base de datos una vez que las creamos.
Al aprender estos dos, ahora tiene la capacidad de ejecutar rápidamente comandos largos y modificar grandes porciones de conjuntos de datos con facilidad.
Mis mejores deseos,
Hafiz