• Saltar a la navegación principal
  • Saltar al contenido principal

DBA dixit

Recursos en línea para el administrador y el desarrollador de bases de datos

  • Lo básico
  • SQL
  • Administración
  • Herramientas
  • Buenas prácticas
  • Performance & Tuning
Usted está aquí: Inicio / SQL / Vistas en SQL

Vistas en SQL

25/06/2021 by DBA

Vistas en SQL

Vistas

Concepto de vista

Una Vista, en SQL, es una forma cómoda de escribir consultas, ya que se puede escribir un SELECT muy complejo o muy repetitivo y crearle un alias, de tal manera que cuando se quiera volver a ejecutar ese query, solo se tiene que hacer un SELECT a ese alias y el motor de base de datos repetirá todo el SELECT original.

Cómo crear una vista nueva: CREATE VIEW

La forma de crear una vista es muy sencilla ya que solo se tiene que anteponer un CREATE VIEW a un SELECT y se creará una nueva tabla virtual o alias para ese SELECT. Pongamos un ejemplo:

Suponiendo que se tenga el siguiente SELECT

SELECT nombre, direccion, telefono, tutores, estatus FROM alumnos WHERE sexo='F';

y se quiera crear una vista, lo único que se tiene que hacer es anteponer el CREATE VIEW al SELECT de la siguiente manera:

CREATE VIEW DirectorioAlumnas AS
SELECT nombre, direccion, telefono, tutores, estatus FROM alumnos WHERE sexo='F';

Uso o aprovechamiento de la vista

A partir de la creación de esta vista, existirá una «nueva» tabla llamada DirectorioAlumnas (realmente será un alias) que será una forma corta de escribir el SELECT original, de tal manera que esta nueva vista tendrá 5 campos de la tabla alumnos, siempre filtrando a sexo=’F’. De esta manera un

SELECT * FROM DirectorioAlumnos WHERE  estatus=13

sería igual a escribir

SELECT nombre, direccion, telefono, tutores, estatus FROM alumnos WHERE sexo='F' AND estatus=13;

Una vista es solo un query, no los datos

Como se puede ver, una vista solo es una forma cómoda de escribir querys, no crea una estructura que copie los datos originales, por lo que siempre está actualizada. Lo que se guarda en la base de datos es el query original, no los datos, por lo que cada vez que se hace uso de una vista se ejecuta nuevamente el SELECT original.

Una vista no es más eficiente que el SELECT original

Aunque pareciera que escribir un query que usa una vista es mejor que utilizar un SELECT complejo, en la realidad es lo mismo para el motor de bases de datos, ya que al calcular el plan de ejecución se calcula utilizando el query original, por lo que no son más eficientes necesariamente, si no que solo facilitan la tarea de escribir consultas complejas.

Tipos de vistas

Si bien esta es una de muchas posibles clasificaciones, si nos dará una idea de lo que se puede hacer con, o en, una vista.

Vista horizontal

Es aquella que reduce el número de registros de la tabla original, pero manteniendo todos sus campos; de esta manera no se tiene que hacer el mismo filtro de filas cada vez que se quiera acceder a ese subconjunto de la tabla original.

Vista horizontal en SQLLa forma de escribir una vista de este tipo es con un código similar al siguiente:

CREATE VIEW nombreDeVista
AS
SELECT * FROM tablaOriginal
WHERE (condición)

La condición en el WHERE será la forma por la cual se filtrarán los registros. El primer ejemplo de este artículo es una vista horizontal.

Vista vertical

Es aquella vista que elimina algunos campos de la tabla original, pero manteniendo todos los registros de la misma. Con vistas de este tipo se obtiene un subconjunto más manejable de atributos obtenidos. En este caso, como evita el uso de un SELECT * podría mejorar la eficiencia del query en algunas circunstancias.

Vista vertical en SQL

La forma regular de crear una vistas verticales es

CREATE VIEW nombre_vista
AS
SELECT campo1,campo2,…,campoN
FROM tabla

la enumeración de los campos -sin un WHERE en el SELECT- hace de esta una vista vertical.

Subconjuntos filas/columnas

Esta vista es una combinación de las dos anteriores. De la horizontal hereda el uso de un WHERE para filtrar registros, y de la vertical usa la enumeración de ciertos campos para evitar usar un SELECT *

Vista combinada (horizontal y vertical)

Para escribir este tipos de vistas se tiene que ejecutar un query similar al siguiente:

CREATE VIEW nombreVista
AS
SELECT campo1,campo2,…,campoN
FROM tabla
WHERE (condición)

Vistas agrupadas

Dado que cualquier instrucción SELECT se puede convertir en una vista, nada impode que un SELECT con uno o más JOINs puede formar una nueva vista, llamada agrupada.

Vista agrupada con SQL

Un ejemplo de código para crear este tipo de vista podría ser

CREATE VIEW nombreVista
AS
SELECT t1.campos, t2.campos, t3.campos
FROM t1
JOIN t2
JOIN t3;

Vistas compuestas

Esta es una vista formada de un GROUP BY en su SELECT original, de tal manera que se hacen sumarizaciones regularmente y el resultado se guarda con una vista para su posterior utilización.

Vista compuesta con GROUP BY

El siguiente es una estructura general de una vista compuesta

CREATE VIEW nombre
AS
SELECT campos
FROM tabla
GROUP BY campos

 

Publicado en: Performance & Tuning, SQL

  • Lo básico
  • SQL
  • Administración
  • Herramientas
  • Buenas prácticas
  • Performance & Tuning

Copyright © 2023 · Wellness Pro on Genesis Framework · WordPress · Acceder