Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 33 di 41
  • livello principiante
Indice lezioni

Creare una vista

Come creare una vista per semplificare e limitare l'accesso alle tabelle da parte degli utenti
Come creare una vista per semplificare e limitare l'accesso alle tabelle da parte degli utenti
Link copiato negli appunti

Una vista, (o view), è un oggetto logico che consente di avere una rappresentazione dei dati "personalizzata" dagli utenti.

Per ottenere informazioni capita di costruire query complesse (con join, alias, nidificazioni, etc.) da dare magari ad un altro componente del team di sviluppo, che avrebbe bisogno di qualcosa di molto più semplice e meno lungo.

La vista può essere intesa come "l'alias di una query", ovvero un modo veloce di eseguire una certa query. Se la query definita ogni volta e non viene memorizzata in nessuna struttura fisica o logica, la vista invece è un oggetto creato dall'utente e memorizzato nel dizionario dei dati.

Ciò che resta memorizzato è solo la definizione della query e non i dati che continuano a essere memorizzati nelle rispettive tabelle. Le tabelle interrogate da una vista sono chiamate base tables, cioè tabelle di base.

CREATE VIEW

Lo statement che consente la creazione di una vista è CREATE VIEW. Per esempio creeremo una vista, denominata "my_view", che visualizza solo i dati contenuti nelle colonne "nominativo", "data_assunz" e "paese_residenza" della tabella impiegati.

Struttura della tabella "impiegati"

Struttura della tabella

Esempio

SQL> CREATE VIEW my_view AS
  2  SELECT nominativo, data_assunz, paese_residenza
  3  FROM impiegati;

Analizziamo la struttura della vista "my_view" per comprendere che è semplicemente un'estrapolazione della struttura della tabella impiegati.

Struttura della vista "my_view"

Struttura della vista

Per fare un altro esempio creeremo una vista, denominata "new_employees", che visualizza il contenuto delle colonne "last_name", "first_name", "email" e "phone_number" della tabella "employees"

Struttura della tabella "employees"

Struttura della tabella

SQL> CREATE VIEW new_employees AS
  2 SELECT last_name || ' ' || first_name NOME, email, phone_number
  3 FROM employees 
  4 WHERE department_id = (SELECT department_id
  5    FROM departments WHERE department_name = 'Finance');

Nota: L'alias di colonna "NOME" visualizza la concatenazione (realizzata con ||), cioè l'unione, delle colonne "last_name" e "first_name".

La vista visualizza tutti gli impiegati che lavorano nel dipartimento denominato 'Finance'. Per conoscere il codice di identificazione di questo dipartimento abbiamo usato una subquery.

Struttura della vista "new_employees"

Struttura della vista

Facciamo attenzione alla capacità delle colonne "last_name", "first_name" e "nome". La prima può memorizzare al massimo 25 caratteri, la seconda 20 e la terza, quella su cui è basata la concatenazione delle prime due, 46 caratteri (25 + 20 + 1 carattere di spazio).

Creazione di una vista di sola lettura

Oltre ad usare le viste come query, possiamo sfruttarle per eseguire alcune operazioni DML sulle tabelle base (es. UPDATE). Per evitare che chi ha accesso alle viste possa modificare i dati nelle tabelle base, possiamo creare viste di sola lettura usando la clausola WITH READ ONLY in CREATE VIEW.

Vista che non consente operazioni di DML

SQL> CREATE VIEW readonly_view AS
  2  SELECT * FROM padre
  3  WITH READ ONLY;

Ti consigliamo anche