La ragione primaria per cui si introduce un sistema informativo è quella di poter effettuare comodamente ricerche, ovvero “interrogare i dati” come si dice. 

Delle operazioni che si possono compiere sui dati parliamo anche nell’articolo sui DBMS.

SQL: il linguaggio dei dati

Il linguaggio utilizzato maggiormente per effettuare questa operazione è detto SQL (Structured Query Language) e permette di operare direttamente sui dati contenuti nelle tabelle di un database relazionale.

Esistono numerosi “dialetti” dell’SQL: si tratta di SQL con sintassi leggermente diverse, ad esempio a seconda del vendor (Microsoft, Oracle ecc.).

Le stringhe in linguaggio SQL sono dette query (dal latino quaero: chiedere per sapere).

Esempi di comandi SQL (DML) senza modifica di dati

Con alcuni esempi vengono qui di seguito introdotti i comandi DML (Data Manipulation Language) fondamentali.

Gli esempi utilizzeranno la seguente tabella di partenza, denominata “studente”, dove il campo matricola è chiave primaria:

MATRICOLA COGNOME NOME CORSO
12001 Rossi Mario A
12002 Bianchi Paolo B
12003 Verdi Giovanna B
12004 Neri Maria A

 

ESEMPIO 1. Si vuole un elenco dei cognomi contenuti nella tabella, ordinato alfabeticamente (dalla A alla Z); la query

select cognome from studente order by cognome

dà come risultato

COGNOME
Bianchi
Neri
Rossi
Verdi

Si noti che il comando select non modifica alcuna riga della tabella, ma mostra solo (in parte o tutto) il contenuto della tabella stessa. Difatti dopo l’esecuzione della query la tabella rimane quella di partenza:

MATRICOLA COGNOME NOME CORSO
12001 Rossi Mario A
12002 Bianchi Paolo B
12003 Verdi Giovanna B
12004 Neri Maria A

 

ESEMPIO 2. Ora vogliamo visualizzare l’elenco delle matricole del corso A: la query

select matricola from studente where corso=’A’

dà come risultato (in visualizzazione: anche qui siccome c’è select non viene modificata la tabella di partenza)

MATRICOLA
12001
12004

 

ESEMPIO 3. Vogliamo ora invece visualizzare l’elenco di matricole del corso A, con cognome e nome: la query

select matricola,cognome,nome from studente where corso=’A’

dà come risultato (in visualizzazione: anche qui siccome c’è select non viene modificata la tabella di partenza)

MATRICOLA COGNOME NOME
12001 Rossi Mario
12004 Neri Maria

 

ESEMPIO 4. Ora invece cerchiamo numero di matricola, cognome e nome degli studenti che frequentano il corso A e si chiamano di nome Mario: la query

select matricola,cognome,nome from studente where corso=’A’ and nome=’Mario’

dà come risultato 

MATRICOLA COGNOME NOME
12001 Rossi Mario

 

ESEMPIO 5. Vogliamo ora una lista di matricole, cognomi e nomi degli studenti il cui nome inizia con la lettera M: la query

select cognome,nome from studente where cognome like ‘M%’ 

dà come risultato

MATRICOLA COGNOME NOME
12001 Rossi Mario
12004 Neri Maria

NOTA: si ribadisce che gli esempi visti finora (da 1 a 5) utilizzano l’istruzione select, dunque non effettuano modifiche sui dati. Gli esempi successivi (da 6 a 8) invece modificano i dati, come si vedrà nel seguito.

Esempi di comandi SQL (DML) con modifica di dati

ESEMPIO 6.  Vogliamo inserire un record (una riga) nella tabella: la query

insert into studente values (’12005’,’Russo’,’Nicola’,’A’)

inserisce nella tabella una nuova riga, così ora la tabella è

MATRICOLA COGNOME NOME CORSO
12001 Rossi Mario A
12002 Bianchi Paolo B
12003 Verdi Giovanna B
12004 Neri Maria A
12005 Russo Nicola A

 

ESEMPIO 7. Vogliamo aggiornare un record nella tabella (lo studente Neri Maria si sposta dal corso A al corso B): la query

update studente set corso=’B’ where matricola=’12004’

aggiorna i dati, così ora la tabella è 

MATRICOLA COGNOME NOME CORSO
12001 Rossi Mario A
12002 Bianchi Paolo B
12003 Verdi Giovanna B
12004 Neri Maria B
12005 Russo Nicola A

Si presti molta attenzione alla “pericolosità” del comando update: se ci si dimentica la clausola where si rischia di aggiornare per errore l’intera colonna di una tabella (nel nostro esempio, se si scrivesse update studente set corso=’B’ si avrebbe come risultato che in ogni riga della tabella ci sarebbe B nella colonna CORSO)

 

ESEMPIO 8. Vogliamo eliminare un record dalla tabella (lo studente matricola 12002 viene eliminato dall’archivio)

delete from studente where matricola=’12002’

elimina una riga dalla tabella, così ora la tabella è 

MATRICOLA COGNOME NOME CORSO
12001 Rossi Mario A
12003 Verdi Giovanna B
12004 Neri Maria A
12005 Russo Nicola A

Si noti che questa ultima operazione è insolita, perché spesso i dati vengono conservati e solamente “marcati per la cancellazione” in maniera che non risultino visibili, ma sia sempre possibile recuperarli (il concetto è simile a “sposta nel cestino” di Windows).

Comandi avanzati e transazioni

Oltre ai fondamentali (SELECT, INSERT, UPDATE, DELETE) esistono altri comandi SQL importanti da conoscere come ad esempio: GROUP BY, DISTINCT e quelli che permettono di operare su più tabelle facendo le cosiddette JOIN.

L’effetto di un comando SQL è definitivo (non sono annullabili) a meno che i comandi non siano inseriti all’interno di una transazione: un processo che viene visto come unico e come tale è reversibile.

Alcuni comandi per le transazioni: BEGIN TRANSACTION, COMMIT, ROLLBACK

Comandi SQL (DDL)

I comandi DDL (Data Definition Language) non modificano i dati, ma servono a gestirne la struttura.

Esempi di comandi DDL:

  • su un intero database: CREATE DATABASE, ALTER DATABASE, DROP DATABASE
  • su tabelle: CREATE TABLE, ALTER TABLE, DROP TABLE
  • su indici: CREATE INDEX, DROP INDEX

Come iniziare

Esistono software con funzionalità di wizard (assistenti) che permettono di generare query, anche visualmente, senza conoscere il linguaggio SQL. Crediamo però che sia fondamentale la conoscenza del linguaggio SQL, così da poter effettivamente “dominare” i processi di manipolazione dei dati.

Un ottimo punto di partenza è il sito w3school dove ci si può esercitare interattivamente sui vari linguaggi che hanno a che fare con il web (e dunque anche con l’SQL, utilizzato in ogni sito dinamico).

 

Bibliografia: Rossignoli, N., Informatica per i beni culturali, Lampidistampa, Milano, 2010

Foto di Pixabay da Pexels