AnteriorPosterior

13 - Vistas

Por: Nacho Cabanes
Actualizado: 17-04-2019 11:02
Tiempo de lectura estimado: 3 min.

 

SQL y MySQL

13.1. Creación de vistas

Una consulta compleja puede ser acabar teniendo un gran tamaño, que haga que resulte difícil de leer, y que sea incómodo ampliarla aún más para añadir condiciones adicionales.

Como mejora, podemos crear "vistas", que nos permitan llamar de forma más breve a una consulta y, de paso, pueden ayudar a filtrar la cantidad de información a la que queremos que ciertos usuarios tengan acceso, no dándoles acceso a todas las tablas sino sólo a ciertas vistas:

CREATE VIEW personasycapac AS
SELECT persona.nombre nompers, capacidad.nombre nomcapac
FROM persona LEFT OUTER JOIN capacidad
ON persona.codcapac = capacidad.codigo;

Y esta "vista" se utiliza igual que si fuera una tabla:

SELECT * FROM personasycapac;

+---------+--------------+
| nompers | nomcapac     |
+---------+--------------+
| Javier  | Progr.Pascal |
| Jesus   | NULL         |
| Jose    | NULL         |
| Juan    | Progr.C      |
+---------+--------------+

De modo que ahora podemos aplicar condiciones sobre esa vista usando WHERE, así como mostrar datos ordenados o aplicar cualquier otra manipulación:

SELECT * FROM personasycapac
WHERE substring(nompres,3,1) = 's'
ORDER BY nompres DESC;

+---------+--------------+
| nompers | nomcapac     |
+---------+--------------+
| Javier  | Progr.Pascal |
| Jesus   | NULL         |
| Jose    | NULL         |
| Juan    | Progr.C      |
+---------+--------------+

Cuando una vista deje de sernos útil, podemos eliminarla con "drop view".

(Las vistas están disponibles en MySQL desde la versión 5.0. Más detalles en el apartado 13.1.20 del manual de referencia MySQL 5.5).

13.2. Ejercicios propuestos

  • 13.1. Partiendo de la base de datos "ejercicio11", que tenía información sobre deportistas y disciplinas deportivas: crea una vista "personasydeportes" que permita obtener los nombres y apellidos de todos los deportistas, junto con el nombre del deporte que practican (este último dato aparecerá con el nombre "deporte").
  • 13.2. Usa la vista "personasydeportes" para obtener los nombres y apellidos de los deportistas que practican deportes cuyo nombre comienza con "B".
  • 13.3. Crea una vista "personasypaises" que permita muestre un campo "persona" (que estará formado por los apellidos, una coma, un espacio y el nombre de cada deportista) y un campo "pais", que será el nombre del país, o NULL si no se ha indicado el país..
  • 13.4. Usa la vista "personasypaises" para obtener los nombres y apellidos de los deportistas de "España", ordenados por apellido.

233 visitas desde el 17-04-2019

AnteriorPosterior