Linguaggio SQL

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à.

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.

linguaggio sql

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

A proposito dell'autore

Ex studente di informatica promosso a pieni voti, si occupa di sistemi operativi e di assistenza server e della realizzazione di guide e articoli sulla programmazione in genere.