Loading
Loading
SQL (Structured Query Language) è il linguaggio standard per definire, interrogare e manipolare le basi di dati relazionali: con poche istruzioni dichiarative consente di descrivere lo schema (DDL), inserire e modificare i dati (DML) e soprattutto estrarre informazioni con la potente istruzione «SELECT». Questo appunto ricostruisce il linguaggio dalla creazione delle tabelle con i loro vincoli fino alle interrogazioni complesse con «JOIN», funzioni di aggregazione e raggruppamenti, mostrando come ogni richiesta informativa si traduca in una query corretta sul modello relazionale. È materia pienamente valutabile all'Esame di Stato del secondo ciclo (in particolare nella seconda prova di Informatica per il Liceo Scientifico — opzione Scienze Applicate).
5sezionica. 18min di lettura3competenzeLivelloBase 1 · Standard 3 · Approfondimento 1Verificato · 06/2026
livello base
Si richiede di leggere e scrivere interrogazioni «SELECT» su una sola tabella con «WHERE» e «ORDER BY», di eseguire inserimenti, aggiornamenti e cancellazioni e di riconoscere le clausole fondamentali del linguaggio.
livello avanzato
L'indirizzo del Liceo Scientifico — opzione Scienze Applicate chiede di progettare interrogazioni con «JOIN» fra più tabelle, funzioni di aggregazione con «GROUP BY» e «HAVING», sottointerrogazioni e viste, partendo da uno schema relazionale e da una traccia in linguaggio naturale, come nella seconda prova d'esame.
Lesetiefe: Approfondimento
Schriftgröße: Standard
I sottolinguaggi di SQL
Per ciascuno dei seguenti comandi indica se appartiene al DDL o al DML e descrivine la funzione: (1) CREATE TABLE Studente(...); (2) INSERT INTO Studente VALUES(...); (3) SELECT * FROM Studente; (4) DROP TABLE Studente;
CREATE TABLE definisce una nuova tabella e la sua struttura (colonne, tipi, vincoli). Agisce sullo schema: appartiene al DDL.
INSERT INTO aggiunge una nuova riga (tupla) con i valori indicati. Agisce sul contenuto: appartiene al DML.
SELECT estrae righe e colonne dalla tabella senza modificarla. È un'interrogazione: appartiene al DML.
DROP TABLE elimina l'intera tabella, struttura e dati compresi. Agisce sullo schema: appartiene al DDL.
Risultato: DDL: comandi 1 e 4 (definizione/eliminazione della struttura). DML: comandi 2 e 3 (manipolazione e interrogazione del contenuto).
Errori frequenti
Ripasso attivo
Dato l'elenco di comandi CREATE TABLE, INSERT, SELECT, ALTER TABLE, UPDATE, DROP TABLE, DELETE, classifica ciascuno come DDL o DML e, per ognuno, scrivi in una frase l'operazione che compie sulla base di dati.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Integrità referenziale tra due tabelle
Scrivi i comandi DDL per creare la tabella Studente(matricola, cognome, nome, classe) con matricola chiave primaria, e la tabella Voto(id, matricola, materia, valore) con id chiave primaria, matricola chiave esterna verso Studente e un vincolo che imponga 1 <= valore <= 10.
Si crea Studente dichiarando matricola come PRIMARY KEY e vietando i valori nulli sui campi anagrafici.
Si crea Voto con id come PRIMARY KEY; il campo matricola riprende il tipo della chiave riferita.
Si aggiunge la FOREIGN KEY che collega Voto a Studente, garantendo che ogni voto si riferisca a uno studente esistente.
Un CHECK impone l'intervallo ammesso per il voto, scartando inserimenti fuori scala.
Risultato: Due tabelle collegate: Studente con matricola come chiave primaria; Voto con id chiave primaria, matricola come chiave esterna verso Studente e il CHECK che vincola valore nell'intervallo [1, 10].
Errori frequenti
Ripasso attivo
Dato lo schema relazionale Studente(matricola, cognome, nome, classe) e Voto(id, matricola, materia, valore), scrivi i comandi CREATE TABLE che definiscano le due tabelle, la chiave primaria di ciascuna e la chiave esterna che collega Voto a Studente, imponendo inoltre che il valore del voto sia compreso tra 1 e 10.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Effetto dei comandi DML sulle righe di una tabella
Sulla tabella Studente(matricola, cognome, nome, classe): inserisci lo studente (105, Bianchi, Luca, 5A); poi sposta in 5B tutti gli studenti di 5A; infine elimina lo studente con matricola 105.
Si elencano le colonne e si forniscono i valori; le stringhe vanno tra apici, il numero senza.
SET fissa il nuovo valore della classe; WHERE limita l'effetto ai soli studenti di 5A.
WHERE seleziona la singola riga da rimuovere tramite la chiave primaria.
La cancellazione di matricola 105 riesce solo se nessuna riga figlia (per esempio in Voto, con politica RESTRICT) vi fa riferimento; altrimenti il DBMS la rifiuta.
Risultato: Tre comandi DML mirati: un INSERT con colonne esplicite, un UPDATE con WHERE che sposta solo la 5A, un DELETE con WHERE sulla chiave primaria, tutti coerenti con i vincoli dichiarati.
Errori frequenti
Ripasso attivo
Sulla tabella Studente(matricola, cognome, nome, classe): (a) inserisci lo studente con matricola 105, cognome Bianchi, nome Luca, classe 5A; (b) sposta nella classe 5B tutti gli studenti attualmente in 5A; (c) elimina lo studente con matricola 105.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
Anatomia di una query SELECT
Data la tabella Prodotto(codice, nome, categoria, prezzo), seleziona nome e prezzo dei prodotti di categoria 'Cancelleria' con prezzo tra 1 e 5 euro, ordinati per prezzo decrescente.
Si proiettano solo nome e prezzo dalla tabella Prodotto.
Si confronta la stringa categoria, usando gli apici.
BETWEEN include gli estremi: prezzo >= 1 AND prezzo <= 5.
ORDER BY ... DESC ordina dal prezzo più alto al più basso.
Risultato: SELECT nome, prezzo FROM Prodotto WHERE categoria = 'Cancelleria' AND prezzo BETWEEN 1 AND 5 ORDER BY prezzo DESC;
Errori frequenti
Ripasso attivo
Data la tabella Prodotto(codice, nome, categoria, prezzo), scrivi una query che selezioni nome e prezzo dei prodotti della categoria 'Cancelleria' con prezzo compreso tra 1 e 5 euro, ordinando il risultato per prezzo decrescente.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM))
INNER JOIN tra due tabelle correlate
Date Studente(matricola, cognome, classe) e Voto(id, matricola, materia, valore), per ogni materia calcola la media dei voti e mostra solo le materie con media maggiore di 6, ordinando per media decrescente. Mostra anche il numero di voti per materia.
Si uniscono le due tabelle sulla chiave matricola (qui basterebbe la sola tabella Voto, ma il JOIN è richiesto quando servono dati anagrafici).
Si raggruppa per materia e per ogni gruppo si calcolano media e conteggio.
HAVING agisce DOPO il raggruppamento, sulla media calcolata.
Si ordina il riepilogo dalla media più alta alla più bassa.
Risultato: SELECT materia, AVG(valore) AS media, COUNT(*) AS numero FROM Voto JOIN Studente ON Voto.matricola = Studente.matricola GROUP BY materia HAVING AVG(valore) > 6 ORDER BY media DESC;
Errori frequenti
Ripasso attivo
Date le tabelle Studente(matricola, cognome, classe) e Voto(id, matricola, materia, valore), scrivi una query che, per ogni materia, calcoli la media dei voti e mostri solo le materie con media maggiore di 6, ordinando per media decrescente.
Richiamo attivo
Ricorda i punti chiave — poi rivela.
Fonti: Indicazioni Nazionali per i Licei (DPR 89/2010, DM 211/2010) — Obiettivi Specifici di Apprendimento (Ministero dell'Istruzione e del Merito (MIM)) · Esame di Stato del secondo ciclo — quadri di riferimento e griglie di valutazione (Ministero dell'Istruzione e del Merito (MIM))
Riferimenti e fonti