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

CREATE VIEW nom_de_la_vista AS
SELECT columna1, columna2, ...
FROM taula
WHERE condició;

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:

CREATE VIEW vista_vendes AS
SELECT nom, salari
FROM empleats
WHERE departament = 'Vendes';

Consultar una Vista

Un cop creada la vista, podem consultar-la com si fos una taula:

SELECT * FROM vista_vendes;

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:

DROP VIEW vista_vendes;

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:

REFRESH MATERIALIZED VIEW vista_materialitzada_vendes;

Exercicis Pràctics

Exercici 1: Creació de Vistes

  1. Crea una taula productes amb les següents columnes: id, nom, categoria, preu.
  2. Insereix algunes dades a la taula productes.
  3. 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

  1. Consulta la vista vista_electronics.
  2. Modifica la vista vista_electronics per incloure la columna categoria.

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

Mòdul 7: Seguretat i gestió d'usuaris

Mòdul 8: Treballant amb JSON i funcionalitats NoSQL

Mòdul 9: Extensions i eines avançades

Mòdul 10: Estudis de cas i aplicacions del món real

© Copyright 2024. Tots els drets reservats