SQL (Structured Query Language)

Un corso completo sul linguaggio SQL (Structured Query Language): definizioni, esempi ed esercizi

Query SQL

Capitolo 1

Introduzione alle query

Prime elementari regole

La sintassi del linguaggio SQL è abbastanza flessibile, sebbene ci siano delle regole da rispettare come in qualsiasi linguaggio di programmazione.

SELECT COGNOME, NOME

FROM PRESIDENTE

WHERE COGNOME = ‘Pertini’

In questo esempio tutti i caratteri, a parte ‘Pertini’, sono scritti in maiuscolo, ma non deve essere necessariamente così. Avremmo potuto anche scrivere così:

select cognome, nome

from presidente

where cognome = ‘Pertini’

si noti però che ‘Pertini’ è scritto sempre nello stesso modo, infatti i riferimenti ai contenuti di un database devono essere scritti con lo stesso tipo di caratteri in cui sono stati registrati.

 

Le parole chiave che abbiamo usato nella query sono:

  • SELECT
  • FROM
  • WHERE

‘cognome’ e ‘nome’ sono dei campi e ‘presidente’ è una tabella. Quindi il comando recita: seleziona visualizzandoli, i campi cognome e nome della tabella presidente la dove cognome = ‘Pertini’.

Esempio:

ASSEGNI
Assegno Beneficiari Importo Note
1 Computer Shop 500.000 Stampante
2 Assicurazioni ASSO 954.000 Assicurazioni automobili
3 SNAM 650.000 Riscaldamento casa
4 Supermarket GS 490.000 Alimentari
5 Scuola 490.000 Scuola di musica

 

con l’espressione:

select * from assegni;

si ottiene:

Assegno Beneficiari Importo Note
1 Computer Shop 500.000 Stampante
2 Assicurazioni ASSO 954.000 Assicurazioni automobili
3 SNAM 650.000 Riscaldamento casa
4 Supermarket GS 490.000 Alimentari
5 Scuola 490.000 Scuola di musica

 

L’asterisco (*) di select * indica al database di fornire tutte le colonne associate alla tabella specificata dalla clausola FROM.

Come termina una istruzione SQL:

In alcune implementazioni si usa il punto e virgola (;) in altre il punto e virgola o lo slash (/).

Selezionare le colonne o cambiare l’ordine di apparizione

Esempi:

con l’espressione:

select importo, assegno from assegni;

dalla tabella precedente si ottiene:

Importo Assegno
500.000 1
954.000 2
650.000 3
490.000 4
490.000 5

 

Clausola DISTINCT (query senza duplicati)

Esaminando il contenuto del campo Importo della tabella ASSEGNI, si potrà notare che il valore 490.000 appare due volte. Possiamo visualizzare tale colonna facendo comparire i valori ripetuti una sola volta:

select distinct Importo from ASSEGNI;

Importo
500.000
954.000
650.000
490.000

 

Altro esempio:

DOCENTI
Nome Cognome Materia
Lara Bianco Italiano
Lara Bianco Storia
Mario Guidi Diritto
Mario Guidi Economia
Anna Rossi Matematica

 

Con l’espressione:

SELECT DISTINCT NOME, COGNOME

FROM DOCENTI;

si ottiene:

Nome Cognome
Lara Bianco
Mario Guidi
Anna Rossi

 

ESERCIZI (capitolo 1)

  1. Le seguenti query non funzionano. Perché?
    1. Select * from persone
    2. Select *
    3. Select nome cognome FROM persone;
  2. Le seguenti istruzioni forniscono lo stesso risultato?SELECT * FROM PERSONE;select * from persone;
  3. Quale delle seguenti istruzioni SQL è corretta?
    1. select * from persone;
    2. select * from persone/
    3. select *from persone;
  4. Utilizzando la tabella sottostante scrivere una query per selezionare soltanto il contenuto delle colonne ETA e NOME.
    ANAGRAFICA
    NOME COGNOME ETA
    Giovanni Bruni 62
    Antonio Rossi 43
    Mario Rossi 49
    Piero Bianchi 37
    Esmeralda Gnocca 31

     

  5. Dalla tabella sottostante estrapolare, senza ripetizioni, le squadre di calcio presenti.
    TIFOSERIA
    NOME COGNOME SQUADRA_APPARTENENZA
    ARTURO ROSSI LAZIO
    GIOVANNI ROSSI LAZIO
    MARIO ROSSI LAZIO
    MARIA MARCHETTI NAPOLI
    MARIA MARCHETTI ROMA

     

  6. La seguente query è giusta? e se sbagliata, perché?SELECT NOME, DISTINCT SQUADRA_APPARTENENZAFROM TIFOSERIA;
  7. La seguente query è giusta? e se sbagliata, perché?SELECT DISTINCT COGNOME, NOMEFROM TIFOSERIA;
  8. La seguente query è giusta? e se sbagliata, perché?SELECT DISTINCT *FROM TIFOSERIA;

Soluzioni agli esercizi del Capitolo 1

Autore: Art Net

Condividi questo articolo su

15 Commenti

  1. SAlve, quindi non esiste una funzione come p.e. in Excel, che estragga alcuni caratteri a destra o sinistra?
    Ho provato cn right(nome, 3) ma non lo riconosce

    Rispondi al Commento
  2. SELECT COUNT (*)
    Buongiorno

    FROM IMPIEGATO
    WHERE DIPARTIMENTO = ‘PRODUZIONE’

    genera il seguente errore:
    “The data types text and varchar are incompatible in the equal to operator”.

    Invece, sostituendo con WHERE DIPARTIMENTO LIKE ‘PRODUZIONE’, la query funziona.

    Rispondi al Commento
  3. Ho imparato alcune cose buone qui. Certamente merita il bookmarking per la rivisitazione.

    Mi chiedo quanti sforzi hai impostato per creare questo tipo di fantastico sito informativo.

    Rispondi al Commento
  4. guida molto interessante grazie se ci fossero anche le istruzioni per creare la tabella sarebbe completa secondo me

    Rispondi al Commento
  5. Grazie per la guida. Semplice, interessante ed utile.
    Vorremmo segnalare due cose. Un errore ed un dubbio.
    Errore:
    SELECT DIVISIONE, AVG(STIPENDIO)
    FROM DIPENDENTI
    HAVING AVG(STIPENDIO) > 2200000;

    manca la “group by DIVISIONE” prima della HAVING.

    Di conseguenza il dubbio sul punto 6.
    HAVING non è necessario che venga posta dopo la clausola GROUP BY.
    Sicuri?

    Rispondi al Commento
  6. Guida Molto utile, segnalo un errore nella query 9, capitolo 2, delle soluzioni:
    PrezzoIngrosso è moltiplicato * 1,5 ma si chiedeva un aumento del 15%, ciò significa moltiplicare * 1,15

    Rispondi al Commento
  7. Veramente complimenti, una guida dettagliata, semplice e adatta a tutti 🙂

    FortyZone

    Rispondi al Commento
  8. Davvero complimenti ragazzi. La prima guida che per chi parte da zero è manna dal cielo…PERFETTA!!

    Rispondi al Commento
  9. nel punto 8 la soluzione non dovrebbe essere con HAVING MIN(IMPORTO) > 400 000; cioè: SELECT BENEFICIARI FROM ASSEGNI GROUP BY BENEFICIARIO HAVING MIN(IMPORTO) > 400 000;

    Rispondi al Commento
  10. un ottimo Manuale unico errore (se vogliamo chiamarlo cosi) i tipi di dati Char(5) number(5,2) cosa sono e come si usano

    Rispondi al Commento
  11. Complimenti ottimo sito! fatto davvero bene. Grazie!

    Rispondi al Commento

Invia commento

Il tuo indirizzo email non sarà pubblicato.