TOP

SQL-Lezione 7. Funzioni di elaborazione dati

Come nella maggior parte dei linguaggi di programmazione, SQL dispone di funzioni per l'elaborazione dei dati. Vale la pena notare che, a differenza delle istruzioni SQL, le funzioni non sono standardizzate per tutti i tipi di DBMS, ovvero per eseguire le stesse operazioni sui dati, diversi DBMS hanno i propri nomi di funzione. Ciò significa che il codice di query scritto in un DBMS potrebbe non funzionare in un altro e di questo si dovrà tenere conto in futuro. Ciò si applica principalmente alle funzioni per l'elaborazione di valori di testo, la conversione di tipi di dati e la manipolazione delle date.


La maggior parte dei DBMS supportano un insieme standard di tipi di funzioni, vale a dire:

  • Funzioni di testo utilizzate per l'elaborazione del testo (estrazione di parte dei caratteri dal testo, determinazione della lunghezza del testo, conversione dei caratteri in maiuscolo o minuscolo...);
  • Funzioni numeriche. Servono per eseguire operazioni matematiche su valori numerici;
  • Funzioni di data e ora (vengono eseguite manipolazioni di data e ora, viene calcolato il periodo tra le date, viene controllata la correttezza delle date, ecc.);
  • Funzioni statistiche (per calcolo di valori massimi/minimi, valori medi, calcolo di quantità e somme...);
  • Funzioni di sistema (forniscono vari tipi di informazioni di servizio su DBMS, utente, ecc.).
  • 1. Funzioni SQL per l'elaborazione del testo

    L'implementazione SQL in MS Access dispone delle seguenti funzioni per l'elaborazione del testo:

    Funzione Descrizione
    Left() Seleziona i caratteri nel testo da sinistra
    Right() Seleziona i caratteri nel testo a destra
    Mid() Seleziona i caratteri dal centro del testo
    UCase() Converte i caratteri in maiuscolo
    LCase() Converte i caratteri in minuscolo
    LTrim() Rimuove tutti i caratteri vuoti a sinistra del testo
    RTrim() Rimuove tutti i caratteri vuoti a destra del testo
    Trim() Rimuove tutti i caratteri vuoti da entrambi i lati del testo

    Convertiamo i nomi dei prodotti in maiuscolo utilizzando la funzione UCase():

    Run SQLSELECT Product, UCase(Product) AS Product_UCase 
    FROM Sumproduct
    

    Evidenziamo i primi tre caratteri del testo utilizzando la funzione LEFT():

    Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT 
    FROM Sumproduct
    

    2. Funzioni SQL per l'elaborazione dei numeri

    Le funzioni di elaborazione dei numeri sono progettate per eseguire operazioni matematiche su dati numerici. Queste funzioni sono progettate per calcoli algebrici e geometrici, quindi vengono utilizzate molto meno spesso delle funzioni di elaborazione di data e ora. Tuttavia, le funzioni numeriche sono le più standardizzate in tutte le versioni di SQL. Diamo un'occhiata all'elenco delle funzioni numeriche:

    Funzione Descrizione
    SQR() Restituisce la radice quadrata del numero specificato
    ABS() Restituisce il valore assoluto di un numero
    EXP() Restituisce l'esponente del numero specificato
    SIN() Restituisce il seno dell'angolo specificato
    COS() Restituisce il coseno dell'angolo specificato
    TAN() Restituisce la tangente dell'angolo specificato

    Abbiamo elencato solo alcune delle funzionalità principali, ma puoi sempre fare riferimento alla documentazione del DBMS per un elenco completo delle funzionalità supportate con descrizioni dettagliate.

    Ad esempio, scriviamo una query per ottenere la radice quadrata dei numeri nella colonna Importo utilizzando la funzione SQR():

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    MySQL utilizza la funzione SQRT() per ottenere la radice quadrata di un numero.

    3. Funzioni SQL per l'elaborazione di data e ora

    Le funzioni di manipolazione di data e ora sono tra le funzioni SQL più importanti e utilizzate di frequente. Nei database, i valori di data e ora vengono archiviati in un formato speciale, quindi non possono essere utilizzati direttamente senza un'ulteriore elaborazione. Ogni DBMS ha il proprio set di funzioni per l'elaborazione dei dati, che purtroppo non ne consente il trasferimento su altre piattaforme e implementazioni SQL.

    Elenco di alcune funzioni per la gestione di data e ora in MS Access:

    Funzione Descrizione
    DatePart() Restituisce parte di una data: anno, trimestre, mese, settimana, giorno, ora, minuto, secondo
    Year(), Month() Restituisce rispettivamente l'anno e il mese
    Hour(), Minute(), Second() Restituisce l'ora, i minuti e i secondi della data specificata
    WeekdayName() Restituisce il nome del giorno della settimana

    Diamo un'occhiata ad un esempio di come funziona la funzione DatePart():

    SELECT Date1, DatePart("m", Date1) AS Month1 
    FROM Sumproduct
    

    La funzione DatePart() ha un parametro aggiuntivo che ci consente di visualizzare la parte richiesta della data. Nell'esempio abbiamo utilizzato il valore del parametro "m", che visualizza il numero del mese (allo stesso modo possiamo visualizzare l'anno - "aaaa", il trimestre - "q", il giorno - "d", la settimana - "w", l'ora - "h", i minuti - "n", i secondi - "s", ecc.).

    4. Funzioni statistiche SQL

    Le funzioni statistiche ci aiutano a ottenere dati pronti senza campionarli. Le query SQL con queste funzioni vengono spesso utilizzate per analizzare e generare vari report. Un esempio di tali selezioni può essere: determinare il numero di righe in una tabella, ottenere la somma dei valori per un determinato campo, cercare il valore più grande/più piccolo o medio nella colonna specificata della tabella. Notiamo inoltre che le funzioni statistiche sono supportate da tutti i DBMS senza particolari modifiche scritte.

    Elenco delle funzioni statistiche nel DBMS Access:

    Funzione Descrizione
    COUNT() Restituisce il numero di righe in una tabella o colonna
    SUM() Restituisce la somma dei valori in una colonna
    MIN() Restituisce il valore più piccolo in una colonna
    MAX() Restituisce il valore più grande in una colonna
    AVG() Restituisce il valore medio in una colonna

    4.1 Esempi di utilizzo della funzione COUNT()

    Restituisce il numero di tutte le righe nella tabella:

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    Restituisce il numero di tutte le righe non vuote nel campo Prodotto:

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    Abbiamo intenzionalmente rimosso un valore nella colonna Prodotto per mostrare la differenza di prestazioni tra le due query.

    4.2 Esempi di utilizzo della funzione SUM()

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    Con questa richiesta abbiamo visualizzato l'importo totale della merce venduta nel mese di aprile.

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

    Come puoi vedere, nelle funzioni statistiche possiamo anche eseguire calcoli su più colonne utilizzando operatori matematici standard.

    4.3 Esempio di utilizzo della funzione MIN()

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 Esempio di utilizzo della funzione MAX()

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 Esempio di utilizzo della funzione AVG()

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct