Il linguaggio SQL (Structured Query Language) è un linguaggio di programmazione che viene specificatamente utilizzato per la gestione dei dati che sono contenuti in un sistema di gestione di database relazionali (RDBMS) o per l’elaborazione di flussi (RDSMS).
Questo linguaggio di programmazione è utile nella gestione dei dati strutturati in cui esistono relazioni tra diverse entità e variabili dei dati. Un linguaggio che offre principalmente due vantaggi; introduce il concetto di accesso a molti record con un singolo comando ed elimina la necessità di specificare come raggiungere un record, ad esempio con o senza un indice.
SQL ha molti tipi di istruzioni che possono essere classificati informalmente come sottolinguaggi ed include query di dati, manipolazione dei dati, definizione dei dati e il controllo dell’accesso ai dati. Si tratta di uno dei primi linguaggi di programmazione commerciali e dal 1987, è stato modificato per includere un maggior numero di funzionalità.
Indice
Storia del linguaggio SQL
Il linguaggio SQL è stato inizialmente ideato e sviluppato dalla IBM nei primi anni settanta con una prima versione denominata SEQUEL (Structured English Query Language). Un linguaggio progettato soprattutto per manipolare e recuperare tutti i dati memorizzati in un sistema di gestione del database.
Nel 1973, si è iniziato a lavorare su SEQUEL, solo successivamente il suo nome è stato modificato in SQL solo perché SEQUEL era già un marchio registrato da un’altra società. Nel giugno del 1979, la Relational Software, Inc. ha introdotto la prima implementazione disponibile in commercio di linguaggio SQL, l’Oracle V2 (Ver. 2) per computer VAX.
Successivamente, nel 1986, si è adottato ufficialmente la definizione di “Database Language SQL”. Tutte le nuove versioni di questo standard sono state pubblicate dal 1989 fino alla più recentemente nel 2016.
Test Linguaggio SQL
Linguaggio SQL: di Giordano Luigi
LE FUNZIONI DI AGGREGAZIONE
All’interno del comando Select, possono essere usate altre funzioni che agiscono sui valori contenuti in insiemi di righe della tabella e che per questo prendono il nome di funzioni aggregate.
Vediamo quali sono queste altre funzioni dopo il Select:
- funzione COUNT, che conta il numero di righe in una tabella
SELECT count(*) as Num_Record
FROM personale;
oppure
SELECT count(nome) as Num_Nomi
FROM personale;
Può anche essere utilizzata con il WHERE e con il predicato DISTINCT
- funzione SUM, che restituisce la somma di tutti i valori contenuti in una colonna specificata come argomento della funzione (l’attributo utilizzato deve essere di tipo numerico)
SELECT sum(stipendio) as Somma_Stipendi
FROM personale
WHERE livello=5;
L’argomento della funzione sum può anche essere un’espressione numerica
- funzione AVG, che serve a calcolare la media aritmetica dei valori numerici contenuti in una determinata colonna di una tabella
SELECT avg(stipendio) as Media_Stipendi
FROM personale
WHERE funzione=’operaio’;
In questo modo viene calcolato lo stipendio medio dei dipendenti che svolgono la funzione operaio
- funzioni MIN e MAX, che restituiscono il valore minimo o massimo tra i valori, numerici o testuali, della colonna di una tabella specificata come argomento della funzione
SELECT min(stipendio) as Stip_Min, max(stipendio) as Stip_Max
FROM personale;
oppure
SELECT min(cognome) as First_Cog, max(cognome) as Last_Nome
FROM personale;
ORDINAMENTI E RAGGRUPPAMENTI
Nel commando Select, si possono inserire diverse clausole.
L’ordinamento può essere crescente o decrescente, usando rispettivamente le parole chiave ASC e DESC, però, va ricordato che, l’ordinamento crescente è per default.
Vediamo queste clausole:
- ORDER BY, per ottenere i risultati di un’interrogazione ordinati secondo i valori di una o più colonne.
SELECT cognome, nome, codice_fiscale
FROM alunni
ORDER BY cognome, nome;
- GROUP BY, per raggruppare un insieme di righe aventi lo stesso valore nelle colonne
SELECT funzione, sum(stipendio), count(*)
FROM personale
GROUP BY funzione;
Con questa clausola, tutti gli attributi che sono inseriti nel select, devono essere inclusi nel suo interno, oppure devono essere argomenti di una funzione di aggregazione.
- HAVING, con la quale è possibile sottoporre al controllo di una o più condizioni i gruppi contenuti nella clausola group by.
SELECT funzione, avg(stipendio)
FROM personale
GROUP BY funzione
HAVING count(*)>2;
Lista delle funzioni dei dipendenti con lo stipendio medio per ciascuna funzione, purchè i dipendenti con tale funzione >2.
LE CONDIZIONI DI RICERCA
Le condizioni di ricerca sono utilizzate insieme alle clausole Where e Having per determinare i criteri di selezione rispettivamente delle righe e dei raggruppamenti.
Nella scrittura delle condizioni si usano i segni di confronto =, <, >, <>, <=, >= e gli operatori and e or preceduti eventualmente da not.
Vediamo quali sono le condizioni di ricerca:
- BETWEEN, che controlla se un valore è compreso all’interno di un intervallo di valori, inclusi gli estremi.
Visualizza cognome e nome delle persone assunte tra 01/01/1998 e 31/12/2005
SELECT cognome, nome
FROM personale
WHERE data_assunzione BETWEEN #01/01/1998# AND #31/12/2005#;
Anteponendo la clausola not Between non vengono considerati gli elementi all’interno dell’intervallo.
- IN, che controlla se un valore appartiene ad un insieme specificato di valori, cioè è possibile richiedere le righe che hanno i valori di un attributo compresi in una lista di valori indicati dopo la parola In all’interno della condizione scritta dopo
SELECT *
FROM personale
WHERE provincia IN (‘milano’, ‘varese’, ecc);
Anche la clausola in si può inserire in NOT, per considerare la richiesta opposta.
- LIKE, che confronta il valore di un attributo di tipo carattere con un modello di stringa che può contenere i caratteri ‘%’ oppure ‘_’.
Like ‘abc%’ à ricerca stringhe che iniziano con cartteri abc
Like ‘%abc’ à ricerca stringhe che finiscono con cartteri abc
Like ‘%abc%’ à ricerca stringhe che contengono cartteri abc
Like ‘_abc’ à ricerca stringhe di 4 caratteri che finiscono abc
Cognome e nome delle persone, il cui cognome inizia con ros
SELECT cognome, nome
FROM personale
WHERE cognome LIKE ‘ros%’;
- IS NULL, che confronta il valore di una colonna con il valore Null.
Cognome e nome dei dipendenti per i quali è indicata la provincia nella tabella personale.
SELECT cognome, nome
FROM personale
WHERE provincia IS NOT NULL;
Linguaggio SQL di Giordano Luigi