PostgreSQL - VISUALIZZAZIONI

Le viste sono pseudo-tabelle. Cioè, non sono tavoli reali; tuttavia appaiono come tabelle normali per SELECT. Una vista può rappresentare un sottoinsieme di una tabella reale, selezionando determinate colonne o determinate righe da una tabella ordinaria. Una vista può anche rappresentare tabelle unite. Poiché alle viste vengono assegnate autorizzazioni separate, è possibile utilizzarle per limitare l'accesso alla tabella in modo che gli utenti vedano solo righe o colonne specifiche di una tabella.

Una vista può contenere tutte le righe di una tabella o righe selezionate da una o più tabelle. Una vista può essere creata da una o più tabelle, che dipende dalla query PostgreSQL scritta per creare una vista.

Le viste, che sono una specie di tabelle virtuali, consentono agli utenti di eseguire le seguenti operazioni:

  • Struttura i dati in modo che gli utenti o le classi di utenti trovino naturali o intuitivi.

  • Limita l'accesso ai dati in modo tale che un utente possa vedere solo dati limitati invece della tabella completa.

  • Riepiloga i dati di varie tabelle, che possono essere utilizzati per generare rapporti.

Poiché le viste non sono tabelle normali, potresti non essere in grado di eseguire un'istruzione DELETE, INSERT o UPDATE su una vista. Tuttavia, è possibile creare una REGOLA per correggere questo problema di utilizzare DELETE, INSERT o UPDATE in una vista.

Creazione di viste

Le viste di PostgreSQL vengono create utilizzando il CREATE VIEWdichiarazione. Le viste PostgreSQL possono essere create da una singola tabella, più tabelle o un'altra vista.

La sintassi base di CREATE VIEW è la seguente:

CREATE [TEMP | TEMPORARY] VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

Puoi includere più tabelle nella tua istruzione SELECT in modo molto simile a come le usi nella normale query PostgreSQL SELECT. Se è presente la parola chiave TEMP o TEMPORARY facoltativa, la vista verrà creata nello spazio temporaneo. Le visualizzazioni temporanee vengono automaticamente eliminate alla fine della sessione corrente.

Esempio

Considera, la tabella AZIENDA contiene i seguenti record:

id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  3 | Teddy |  23 | Norway     |  20000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000

Di seguito è riportato un esempio per creare una vista dalla tabella AZIENDA. Questa visualizzazione verrebbe utilizzata per avere solo poche colonne dalla tabella AZIENDA -

testdb=# CREATE VIEW COMPANY_VIEW AS
SELECT ID, NAME, AGE
FROM  COMPANY;

Ora puoi interrogare COMPANY_VIEW in modo simile a come interroghi una tabella effettiva. Di seguito è riportato l'esempio:

testdb=# SELECT * FROM COMPANY_VIEW;

Ciò produrrebbe il seguente risultato:

id | name  | age
----+-------+-----
  1 | Paul  |  32
  2 | Allen |  25
  3 | Teddy |  23
  4 | Mark  |  25
  5 | David |  27
  6 | Kim   |  22
  7 | James |  24
(7 rows)

Eliminazione delle visualizzazioni

Per eliminare una visualizzazione, utilizzare semplicemente l'istruzione DROP VIEW con l'estensione view_name. La sintassi di base di DROP VIEW è la seguente:

testdb=# DROP VIEW view_name;

Il seguente comando cancellerà la vista COMPANY_VIEW, che abbiamo creato nell'ultima sezione -

testdb=# DROP VIEW COMPANY_VIEW;