Omet navegació

3.2.7 Vistes

Les vistes, també anomenades esquemes externs, consisteixen en visions particulars de la B.D. Es correspon al nivell extern de l'arquitectura a tres nivells. Les taules, que són les que realment contenen les dades i donen la visió global de la B.D., corresponen al nivell conceptual.

La sintaxi bàsica és la següent:

CREATE VIEW nom_vista
AS subconsulta
[WITH READ ONLY];

on se li dóna un nom, és el resultat d'una subconsulta (un SELECT), i tenim la possibilitat d'impedir la modificació de les dades.

Per exemple, una vista amb les comarques, el número de poblacions de cada comarca, el total d'habitats i l'altura mitjana:

CREATE OR REPLACE VIEW ESTADISTICA AS
SELECT nom_c, count(nom) AS num_p,sum(poblacio) AS pobl, avg(altura) AS alt_mitjana
FROM POBLACIONS
GROUP BY nom_c
ORDER BY nom_c;

Nota

Si voleu provar aquesta vista, ho podeu fer en la Base de Dades geo, ja que en ella tenim dades per a la consulta que proporciona les dades a la vista. Recordeu que ens estem connectant tots com el mateix usuari, per tant si algú ha creat un objecte (en aquest cas una vista) no es podrà utilitzar aquest nom per a crear un altre objecte. Per això és convenient que si feu una prova de crear un objecte, després esborreu aquest objecte.

Observeu la sintaxi CREATE OR REPLACE, que va molt bé per a crear, i si ja existeix per a substituir. Com que estem accedint tots com el mateix usuari, serà prou normal que l'objecte ja existesca per haver-lo creat un company. D'aquesta manera el substituirem. No passa res per esborrar un objecte ja existent, ja que tot açò són proves.

La manera d'utilitzar-la és com una taula normal, però ja sabem, que en realitat les dades estan en les taules.

SELECT *
FROM ESTADISTICA;

I fins i tot es pot jugar amb taules i vistes. En aquesta sentència traurem la província, nom de la comarca, número de pobles i altura mitjana de les comarques amb 5 o menys pobles:

SELECT provincia,COMARQUES.nom_c,num_p,alt_mitjana
FROM COMARQUES , ESTADISTICA
WHERE COMARQUES.nom_c=ESTADISTICA.nom_c and num_p <= 5;

 

Per a esborrar una vista

DROP VIEW nom_vista

Per exemple, per a esborrar la vista anterior:a esborrar una vista

DROP VIEW ESTADISTICA;