Introducció a les Vistes
Les vistes en PostgreSQL són una manera poderosa de simplificar l'accés a les dades i millorar la seguretat. Una vista és essencialment una consulta SQL emmagatzemada que es pot tractar com una taula. Les vistes permeten als usuaris accedir a dades complexes de manera senzilla i coherent, sense haver de conèixer els detalls de les taules subjacents.
Avantatges de les Vistes
- Simplicitat: Simplifiquen consultes complexes.
- Seguretat: Permeten restringir l'accés a dades sensibles.
- Reutilització: Faciliten la reutilització de consultes SQL.
- Mantenibilitat: Faciliten la gestió i manteniment de consultes complexes.
Creació de Vistes
Sintaxi Bàsica
Exemple Pràctic
Suposem que tenim una taula empleats
amb les següents columnes: id
, nom
, departament
, salari
.
CREATE TABLE empleats ( id SERIAL PRIMARY KEY, nom VARCHAR(100), departament VARCHAR(50), salari NUMERIC );
Podem crear una vista per mostrar només els empleats del departament de vendes:
Consultar una Vista
Un cop creada la vista, podem consultar-la com si fos una taula:
Actualització de Vistes
Modificar una Vista
Per modificar una vista existent, utilitzem la instrucció CREATE OR REPLACE VIEW
:
CREATE OR REPLACE VIEW vista_vendes AS SELECT nom, salari, departament FROM empleats WHERE departament = 'Vendes';
Eliminar una Vista
Per eliminar una vista, utilitzem la instrucció DROP VIEW
:
Vistes Materialitzades
Les vistes materialitzades són una variant de les vistes que emmagatzemen físicament les dades resultants de la consulta. Això pot millorar el rendiment en consultes complexes, però requereix actualitzacions periòdiques per mantenir les dades actualitzades.
Creació de Vistes Materialitzades
CREATE MATERIALIZED VIEW vista_materialitzada_vendes AS SELECT nom, salari FROM empleats WHERE departament = 'Vendes';
Actualització de Vistes Materialitzades
Per actualitzar les dades d'una vista materialitzada, utilitzem la instrucció REFRESH MATERIALIZED VIEW
:
Exercicis Pràctics
Exercici 1: Creació de Vistes
- Crea una taula
productes
amb les següents columnes:id
,nom
,categoria
,preu
. - Insereix algunes dades a la taula
productes
. - Crea una vista
vista_electronics
que mostri només els productes de la categoria 'Electrònica'.
Solució
-- Creació de la taula productes CREATE TABLE productes ( id SERIAL PRIMARY KEY, nom VARCHAR(100), categoria VARCHAR(50), preu NUMERIC ); -- Inserció de dades INSERT INTO productes (nom, categoria, preu) VALUES ('Televisor', 'Electrònica', 500), ('Nevera', 'Electrodomèstics', 300), ('Portàtil', 'Electrònica', 1000); -- Creació de la vista CREATE VIEW vista_electronics AS SELECT nom, preu FROM productes WHERE categoria = 'Electrònica';
Exercici 2: Consultar i Actualitzar Vistes
- Consulta la vista
vista_electronics
. - Modifica la vista
vista_electronics
per incloure la columnacategoria
.
Solució
-- Consulta de la vista SELECT * FROM vista_electronics; -- Modificació de la vista CREATE OR REPLACE VIEW vista_electronics AS SELECT nom, preu, categoria FROM productes WHERE categoria = 'Electrònica';
Conclusió
Les vistes són una eina essencial en PostgreSQL per simplificar l'accés a les dades, millorar la seguretat i facilitar la reutilització de consultes SQL complexes. Les vistes materialitzades ofereixen avantatges addicionals en termes de rendiment, especialment per a consultes complexes i freqüents. Amb la pràctica, les vistes es convertiran en una part integral del vostre arsenal d'eines de bases de dades.
Curs de PostgreSQL
Mòdul 1: Introducció a PostgreSQL
Mòdul 2: Operacions bàsiques de SQL
Mòdul 3: Consultes SQL avançades
Mòdul 4: Disseny de bases de dades i normalització
Mòdul 5: Funcionalitats avançades de PostgreSQL
Mòdul 6: Optimització i millora del rendiment
- Optimització de consultes
- Estratègies d'indexació
- Analitzant el rendiment de les consultes
- Vacuuming i manteniment
Mòdul 7: Seguretat i gestió d'usuaris
- Rols d'usuari i permisos
- Mètodes d'autenticació
- Encriptació de dades
- Còpia de seguretat i restauració
Mòdul 8: Treballant amb JSON i funcionalitats NoSQL
Mòdul 9: Extensions i eines avançades
- PostGIS per a dades geoespacials
- Cerca de text complet
- Wrappers de dades externes
- PL/pgSQL i altres llenguatges procedimentals