Una breve carrellata delle novità di PostgreSQL 8.4 in termini di linguaggio SQL. La possibilità di utilizzare le funzioni finestra e le query WITH sono le principali funzionalità aggiunte dall'ultima versione del database open-source più avanzato al mondo, ma non sono le uniche.
Ecco una lista delle principali novità in ambito SQL di PostgreSQL 8.4.
- Funzioni finestra (Windowing Functions)
-
Anche conosciute con il termine "windowing aggregate", le funzioni finestra permettono di effettuare operazioni di aggregazione (come
count(),sum(), ecc.) e di rango come (rank()erow_number()) su un sottoinsieme dei dati (la cosiddetta finestra o window).A livello pratico, questo comporta che report multi-livello che in precedenza avrebbero richiesto 3 o 4 query (e possibilmente la scrittura di procedure), possano essere ora generati con una singola query.
Le funzioni finestra ampliano il numero di applicazioni di Business Intelligence e supporto alle decisioni che PostgreSQL è in grado di supportare.
Approfondimento su Window Function e sulla sintassi delle chiamate.
- Common Table Expression (CTE) e query ricorsive
-
Le Common Table Expression, anche conosciute con il nome di query
WITH, permettono la creazione di subquery e di assegnar loro un nome. Le subquery possono a loro volta essere referenziate all'interno delle clausole della query alla quale appartengono.Oltre a rimuovere la necessità di creare tabelle temporanee per alcune operazioni, le Common Table Expression consentono di eseguire query ricorsive nelle quali poter attraversare strutture ad albero o grafi all'interno di una singola query, in modo efficiente. Ciò risulta particolarmente importante per tutte le applicazioni che hanno dati organizzati in strutture gerarchiche come forum, gestori di file e organigrammi.
- Comando
TABLE -
Come specificato dallo standard SQL, il comando
TABLE nome_tabellaesegue la stessa identica mansione del comandoSELECT * FROM nome_tabella. ALTER SEQUENCE RESTARTeTRUNCATE TABLE RESTART IDENTITY-
Tramite le istruzioni
ALTER SEQUENCE RESTARTeTRUNCATE TABLE RESTART IDENTITYè adesso possibile azzerare in modo semplice le sequenze, ripristinando il valore iniziale. La prima agisce sull'oggetto sequenza, la seconda azzera la sequenze associate alle colonne della tabella che si intende svuotare.Per approfondimenti:
- Aggiunta di una colonna con
ALTER VIEW -
Permette di aggiungere colonne alla fine di una vista esistente, senza dover ricostruire le dipendenze della vista. Modifiche o rimozioni di colonne continuano a richiedere la ricostruzione delle dipendenze.
LIMIT (espressione o subquery)-
Adesso è possibile limitare il numero di righe restituite da una interrogazione al database utilizzando una espressione oppure addirittura una subquery. In precedenza,
LIMITvincolava all'utilizzo di una costante numerica. Questa modifica rende più facile per una singola vista o stored procedure ad esempio di supportare in modo dinamico meccanismi di paginazione.Esempio per il recupero del primo 10% dei record della tabella notizie:
SELECT * FROM notizie ORDER BY orario DESC LIMIT (SELECT count(*) / 10 FROM notizie); - Parola chiave
ASopzionale per alias di colonna -
Questa funzionalità, che renderà il passaggio da MySQL a PostgreSQL meno doloroso, rende opzionale la specifica della parola chiave "
AS" nell'assegnazione di alias di colonna all'interno delle query.Esempio:
SELECT tablename tabella FROM pg_tables; - Migliorata la conformità rispetto alla standard SQL per la gestione degli intervalli temporali
-
La specifica degli intervalli temporali è stata potenziata e resa più conforme rispetto allo standard SQL. E' stato inoltre aggiunto il supporto per la specifica di intervalli secondo lo standard ISO 8601.
Esempio di specifica di intervallo secondo lo standard ISO 8601:
SELECT INTERVAL 'P2Y1M1DT4H20M7.5S';
Questo articolo è una traduzione da me riadattata del documento "What's new in 8.4" del PostgreSQL Global Development Group. Ringrazio inoltre Hubert Lubaczewski per la serie di articoli "Waiting for 8.4".

Lascia un commento