Esempio di codice SQL

SQL: un overview generale sul linguaggio

L’SQL è un linguaggio di programmazione dichiarativo che permette di interrogare, aggiornare e gestire i database relazionali. SQL è l’acronimo di Structured Query Language, molte persone ancora oggi si rivolgono a questo linguaggio con il nome originale Sequel, modificato in SQL intorno alla fine degli anni 70 per semplici questioni di brevetto.

 

SQL è un linguaggio dichiarativo

Un linguaggio di programmazione dichiarativo si concentra su cosa il programma deve fare, senza concentrarsi sul come o sull’algoritmo specifico. Tramite l’SQL chiederemo ad esempio al database di creare una nuova tabella, di estrarre le informazioni da una vista applicando dei filtri e dei raggruppamenti o di modificare il tipo di una colonna. Ma per far ciò non avremo mai bisogno di implementare algoritmi o utilizzare i comuni costrutti della programmazione procedurale come IF, WHILE o FOR.

Facciamo un esempio per rendere più chiara la questione: per estrarre l’elenco dei codici fiscali dei clienti residenti nella regione Lombardia, con un linguaggio procedurale potremmo scrivere un algoritmo del genere:

  • consideriamo la particolare struttura dati contenente le informazioni sui clienti (si potrebbe trattare ad esempio di una lista o un array);
  • tramite un ciclo FOR scansioniamo tutti gli elementi della lista;
  • tramite un IF, consideriamo soltanto i clienti residenti in Lombardia. In quel caso salviamo il codice fiscale in un array di output.

L’approccio dichiarativo è completamente diverso: lo sviluppatore scriverà una semplice query con il linguaggio SQL:

SELECT CodiceFiscale
FROM Clienti
WHERE RegioneResidenza = ‘Lombardia’;

e demanderà al RDBMS (Relational Database Management System) l’onere di tradurre ed eseguire la query. Per maggiori informazioni su come scrivere una query SQL puoi leggere questo mio approfondimento.

 

Istruzioni DQL

Come ricordato anche dalla lettera Q presente nel suo nome, il cuore del linguaggio SQL consiste nelle istruzioni per interrogare i dati presenti nel database relazionale. Nei prossimi paragrafi vedremo come utilizzare l’SQL per gestire l’intero ciclo di vita di un database, ma in questa sezione ci concentreremo sulle operazioni di interrogazione DQL (Data Query Language).

Le principali parole chiave da conoscere per interrogare un database e che fanno parte della famiglia DQL sono:

  • SELECT per specificare le colonne delle tabelle da visualizzare;
  • FROM per indicare le tabelle da cui prelevare i dati;
  • JOIN per collegare all’interno di una clausola From i dati di più tabelle;
  • WHERE per filtrare i dati;
  • GROUP BY per raggruppare e aggregare i dati;
  • HAVING per filtrare i dati successivamente ad un raggruppamento;
  • ORDER BY per ordinare i dati.

Combinando e annidando tra loro queste poche istruzioni, è possibili scrivere codice SQL per effettuare un’ampia parte di tutte le interrogazioni possibili.

 

Istruzioni DDL

Il linguaggio SQL viene utilizzato anche per creare il database, definendone tutti gli oggetti come le tabelle, le colonne, i vincoli eccetera.

Le istruzioni DDL sono essenzialmente tre (più una che vedremo in seguito):

  • CREATE seguito dal nome dell’oggetto che vogliamo creare. Scriveremo ad esempio CREATE TABLE Clienti (seguita dell’elenco delle colonne) per creare la tabella Clienti, oppure CREATE VIEW FatturatoAnnuo per creare la vista FatturatoAnnuo e così via.
  • ALTER seguito dal nome dell’oggetto e dalla particolare attività di modifica che vogliamo svolgere. Ad esempio scriveremo ALTER TABLE Clienti ADD PRIMARY KEY (NumeroCliente) per modificare la tabella Clienti aggiungendo una chiave primaria, oppure scriveremo ALTER TABLE Clienti DROP COLUMN Residenza per eliminare la colonna Residenza dalla tabella Clienti.
  • DROP per eliminare un oggetto: ad esempio DROP TABLE Clienti o DROP VIEW FatturatoAnnuo.

Tutte e tre queste istruzioni agiscono sulla struttura del database, non sui singoli dati presenti nelle tabelle. Fa eccezione l’ultima istruzione DDL:

  • TRUNCATE TABLE <nome tabella> che ha l’effetto di svuotare la tabella indicata rimuovendo tutte le righe presenti, ma lasciando inalterata la struttura.

 

Istruzioni DML

Le istruzioni DML sono utilizzate per popolare, aggiornare ed eventualmente eliminare i dati presenti nelle tabelle del database. A queste tre attività corrispondono tre istruzioni: INSERT INTO, UPDATE e DELETE.

Spesso all’inizio si fa confusione tra le istruzioni DDL e le istruzioni DML. Tramite le DDL si agisce in generale sull’intera struttura della tabella, ad esempio eliminando completamente la tabella (DROP) o svuotandola del suo intero contenuto (TRUNCATE). Invece tramite le istruzioni DML possiamo effettuare delle operazioni su specifiche righe di una tabella, ad esempio eliminando i soli clienti della regione Lombardia, oppure aumentando del 10% lo stipendio di uno specifico impiegato.

In questa pagina trovi un mio approfondimento su come scrivere correttamente Insert, Update e Delete su un database.

 

Altre istruzioni per gestire un Database

Tramite l’SQL è possibile gestire anche tutto ciò che riguarda l’amministrazione di un database. Occorrerà ad esempio effettuare dei backup ed occasionalmente dei ripristini, creare utenti e gestire le password, assegnare e revocare diritti di lettura. In questa pagina https://www.lifewire.com/data-control-language-dcl-1019477 trovi un articolo in inglese sulle operazioni DCL (Data Control Language) associate alla gestione dei permessi.

Infine ricordiamo che l’SQL contiene delle istruzioni come TRANSACTION e COMMIT per gestire le transazioni, vale a dire quell’insieme di operazioni che devono essere compiute come un’unica unità, evitando in tutti i modi esecuzioni solo parziali di una parte di esse.

 

I dialetti dell’SQL

Per quanto l’SQL sia considerabile un linguaggio universale con standard ANSI e ISO, ogni particolare RDBMS ha espanso e in parte rimodulato il linguaggio. Sono nati così quelli che possiamo definire non dei veri e propri linguaggi, ma dei dialetti dell’SQL. Tra i più importanti ricordiamo T-SQL (Transact SQL) del database Microsoft SQL Server e PL-SQL (Procedurale Language SQL) del database Oracle. In questa pagina trovi alcune importanti differenze tra i due dialetti da conoscere assolutamente per non commettere errori.

In ognuno di questi dialetti sono presenti delle particolari funzioni che permettono in alcuni casi di scrivere del codice più efficiente e compatto. Se da un lato è opportuno studiare questi punti di forza, dall’altro, in caso di completa equivalenza tra una sintassi standard e una sintassi del particolare dialetto, è sempre preferibile usare quella standard per ragione di chiarezza e portabilità del codice.

 

Pagine correlate sull’SQL

Visita il blog per trovare tanti articoli gratuiti sull’SQL o la sezione Corsi se sei interessato a prendere delle lezioni.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Torna su