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;