Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

SELECT: estrapolare dati

Anche su OrientDB è possibile utilizzare l'istruzione SELECT di SQL per accedere ai dati memorizzati sul database, raggruppandoli o ordinandoli: ecco come.
Anche su OrientDB è possibile utilizzare l'istruzione SELECT di SQL per accedere ai dati memorizzati sul database, raggruppandoli o ordinandoli: ecco come.
Link copiato negli appunti

Dopo aver visto come inserire record nel database, in questa lezione capiremo in che modo possiamo leggerli, utilizzando l'istruzione SELECT.

L'uso base di SELECT prevede l'indicazione dei campi da leggere, e della classe o del cluster sorgenti. Ecco alcuni esempi:

SELECT * FROM Persona
SELECT FROM Persona
SELECT nome FROM Persona

I primi due mostreranno l'intero elenco di record (l'asterisco per la selezione totale è, infatti, facoltativo in OrientDB) mentre il terzo comando mostrerà solo il campo nome di tutti i record.

Per filtrare l'elenco dei record ottenuti con un'istruzione SELECT, è possibile utilizzare la clausola WHERE, seguita dall'espressione logica che indicherà quali record devono far parte del risultato:

SELECT * FROM Persona WHERE nome='carlo'
SELECT * FROM Persona WHERE nome='carlo' AND eta>=18

I due esempi recuperano tutti i record in cui il campo nome è uguale alla stringa carlo, ed il secondo restringe il risultato ai soli individui maggiorenni. Questo utilizzo della clausola WHERE prevede la composizione di regole logiche basate su:

  • operatori di confronto semplici: > (maggiore), < (minore), = (uguale) e le loro composizioni >= (maggiore o uguale), <= (minore o uguale) e <> (diverso);
  • operatori logici per concatenare più confronti semplici: AND (restituisce valore logico vero se entrambe
    le espressioni coinvolte sono vere), OR (vero se almeno una delle due espressioni che unisce è vera), NOT (inverte il risultato dell'espressione che lo segue);
  • altri operatori che permettono di esprimere in forma più descrittiva il confronto da operare: IN (seguito da un elenco, indica un insieme di valori in cui si deve cercare una corrispondenza), BETWEEN (indica un range cui il valore deve appartenere), LIKE (confronta una stringa con un pattern anzichè un valore; nel pattern si può utilizzare il simbolo % per indicare l'eventuale presenza di qualunque carattere) e IS (utilizzato specialmente nella forma IS NULL per verificare se un campo sia nullo).
    Ecco alcuni esempi:
    #seleziona tutti i record purchè il campo nome contenga una delle tre stringhe indicate
    SELECT * FROM Persona WHERE nome in ['carlo', 'paolo', 'silvio']
    #seleziona tutti i record in cui il campo eta contiene un valore compreso tra 20 e 50, estremi inclusi
    SELECT * FROM Persona WHERE eta BETWEEN 20 and 50
    #seleziona tutti i record in cui il campo nome inizia con la sillaba ca
    SELECT * FROM Persona WHERE nome LIKE 'ca%'
    #seleziona tutti i record in cui il campo nome sia nullo
    SELECT * FROM Persona WHERE nome IS NULL

Ulteriori esempi sul filtro dei record tramite la clausola WHERE possono essere reperiti sulla documentazione ufficiale.

Funzioni e metodi

Nell'ambito del linguaggio SQL possono essere utilizzate anche funzioni e metodi. Le prime svolgono elaborazioni su uno o più parametri e ne restituiscono il risultato, a sua volta coinvolto nello svolgimento della query; i secondi, nella stessa accezione della programmazione orientata agli oggetti, vengono applicati ad uno specifico valore.

Quelli che seguono sono esempi di utilizzo di funzioni:

#esprime il valore massimo del campo età
SELECT max(eta) FROM Persona
#calcola l'età media degli individui registrati
SELECT avg(eta) FROM Persona
#indica il numero di record appartenenti alla classe
SELECT count(*) FROM Persona

Esistono molte altre funzioni che riguardano i grafi (navigazione tra nodi, analisi e algoritmi), calcoli matematici e statistici
(alcune viste poc'anzi negli esempi) e la gestione di collection di valori.

Tra le funzioni merita una menzione particolare distinct(), in quanto rappresenta l'implementazione, su OrientDB, della parola chiave DISTINCT di SQL:

#mostra tutti valori del campo nome senza duplicati
SELECT distinct(nome) FROM Persona

I metodi possono essere considerati delle funzioni da applicare direttamente su un valore. Per lo più, si occupano di conversioni tra
tipi di dato e manipolazione di stringhe e strutture dati. Vediamone alcuni esempi:

#visualizza i primi due caratteri da sinistra dei valori del campo nome convertiti in maiuscolo
select nome.toUpperCase().left(2) from Persona
#stampa per ogni valore nel campo cognome la posizione della prima lettera 'n' che incontra,
# -1 se il carattere non è presente nella stringa
select cognome.indexOf('n') from Persona

La documentazione ufficiale tratta in dettaglio i vari aspetti di
funzioni e metodi.

Raggruppamento e ordinamento

Un'operazione molto utilizzata nel linguaggio SQL dei DBMS relazionali è il raggruppamento. Anche in OrientDB questa funzionalità risulta fondamentale, e si applica tramite la clausola GROUP BY che introduce il campo o l'elenco dei campi in base ai quali verrà eseguito il raggruppamento. L'esempio seguente mostra una query che conterà quanti cognomi identici sono presenti nella classe Persona:

SELECT cognome, count(cognome) FROM Persona GROUP BY cognome

Altro aspetto molto importante è l'ordinamento dei risultati di una query, che si implementa mediante ORDER BY. Nell'esempio che segue vengono sottoposti a ordinamento decrescente, in base al risultato del conteggio, i record
raggruppati per cognome:

SELECT cognome, count(cognome) AS conteggio FROM Persona GROUP BY cognome ORDER BY conteggio DESC

Ti consigliamo anche