Generando vistas – consultas complejas – combinando tablas.

Una vista es una consulta memorizada por la base de datos a la que asignamos un nombre para poder utilizarla como si fuera una tabla cualquiera. Eso es útil para volver a aprovechas sentencias sin tener que volverlas a escribir cada vez que queramos ejecutarlas.

Create view

La sintaxis para la creación de una vista es:

Donde:

  • create view.- Crea una consulta memorizada por la base de datos.
  • vista.- Es el nombre que daremos a la vista.
  • (columnas).- Lista de columnas de la vista. Es opcional. Si no se informa se cogerán los nombres de las columnas devueltas en la consulta generada por la vista.
  • consulta.- Sentencia SQL que la base de datos ejecutará siempre que ejecutemos la vista.

Ejemplo, creamos una tabla que lista los clientes de la tienda que no están dados de alta on-line:

Veremos en la ventana de notificaciones que la consulta ha sido correcta.

Vamos a consultar la nueva creación:

Mientras se consulta una vista, ésta se comporta como si fuera una tabla, por lo que podemos utilizarla en combinación con join, union, funciones, etc. Recordemos que una consulta es una tabla memorizada con lo cual no podremos modificar los registros. Veamos que pasa si intentamos una modificación de una vista:

Al intentar introducir un nuevo registro y tratarse de una vista, en la ventana de mensajes saldrá no se puede modificar CLIENTES_NO_WEB porque es una vista:

Eliminación de una vista

Es muy similar al borrado de una tabla.

Sintaxis:

Ejemplo:

La ventana de mensajes mostrará que todo ha ido bien.

Veamos que sucede si queremos consultar la vista borrada.

Unión de datos similares

Mejorando la unión de tablas

Al utilizar la palabra join vimos que la base de datos sólo muestra las filas que cumplen la condición de union. Por ejemplo, si ejecutamos una consulta para obtener el nombre de cada cliente que haya realizado compras junto con los artículos adquiridos, veremos que en el listado sólo aparecerán los que hayan comprado al menos una vez.

O sea que todos los que no hayan acudido a la tienda se quedan fuera. Si queremos que aparezcan todos en la consulta, hayan realizado compras o no, podemos utilizar left outer join. Su sintaxis es:

Donde:

  • tabla_maestra.- Tabla donde pegamos los datos. Mostrará siempre todos los registros, independientemente de si hay o no coincidencias con la tabla_detallada.
  • condicion.- Condición que debe cumplir dos filas para unirse. normalmente dos columnas iguales, es decir, columna1 = columna2.

Ejemplo, comprobar los resultados con esta variación de join:

Esta vez obtenemos el listado completo de los clientes, tanto los que han comprado, como los que no. Podemos completar las sentencias con join normal mediante otras palabras claves como where, group by, etc.

Ejemplo, obtener una lista de clientes que hayan comprado velas o bien no hayan comprado ningún artículo.