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

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.

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

Esempi senza modifica di dati

Con alcuni esempi vengono qui di seguito introdotti i comandi 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 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).

 

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

Foto di Pixabay da Pexels