🖥 Linguaggio di Query (SQL)
Guida completa al linguaggio di query, con esempi pratici, concetti fondamentali, tabelle e grafici concettuali per comprendere il funzionamento dei database.
Introduzione al linguaggio di query
Il linguaggio di query è lo strumento principale per interagire con i database. In particolare, SQL (Structured Query Language) permette di estrarre, inserire, aggiornare o cancellare dati in modo efficiente. SQL è un linguaggio dichiarativo: si specifica cosa ottenere e non come ottenerlo, facilitando l’interazione con i database anche complessi.
Cos’è una query
Una query è una richiesta al database. Può essere semplice, come estrarre tutti i dati da una tabella, oppure complessa, combinando più tabelle, filtri, aggregazioni e ordinamenti. Le query rispondono a domande come “Quali clienti hanno effettuato ordini superiori a 1000 euro?” o “Quali prodotti hanno incrementato le vendite del 20% rispetto all’anno scorso?”.
Tipologie principali di query SQL:
SELECT: per estrarre dati da una o più tabelle. Si possono usare filtri (WHERE), ordinamenti (ORDER BY), aggregazioni (SUM, AVG) e raggruppamenti (GROUP BY).
INSERT, UPDATE, DELETE: per inserire nuovi dati, aggiornare dati esistenti o cancellare informazioni dal database.
DDL (Data Definition Language): CREATE, ALTER, DROP per creare o modificare strutture di database.
DCL (Data Control Language): GRANT e REVOKE per gestire permessi e sicurezza.
Concetti chiave
Per comprendere le query è importante conoscere le tabelle, le chiavi primarie, le chiavi esterne e i join. Le tabelle contengono dati organizzati in righe e colonne. La chiave primaria identifica univocamente ogni riga, mentre la chiave esterna crea relazioni tra tabelle diverse. I join combinano informazioni da più tabelle.
Funzioni di aggregazione e filtri
Funzioni come SUM, AVG, COUNT, MAX e MIN permettono di ottenere dati statistici. La clausola WHERE filtra i dati in base a condizioni specifiche, ad esempio WHERE prezzo > 100 seleziona solo prodotti con prezzo superiore a 100.
Esempio pratico di query
SELECT c.Nome, c.Cognome, o.Importo FROM Clienti c INNER JOIN Ordini o ON c.ID = o.ClienteID WHERE o.Importo > 500 ORDER BY o.Importo DESC;
Questa query estrae il nome e cognome dei clienti con ordini superiori a 500 euro, unendo le tabelle Clienti e Ordini sulla base della chiave esterna ClienteID.
Query avanzate
Le query possono diventare molto complesse, utilizzando sottoquery, CTE (Common Table Expressions), stored procedure e trigger. Le sottoquery permettono di annidare richieste; le CTE semplificano query complesse; le stored procedure automatizzano processi; i trigger attivano azioni automatiche quando avvengono modifiche nel database.
Tabella riassuntiva
| Tipo di query | Scopo | Esempi di comandi |
|---|---|---|
| SELECT | Estrarre dati | SELECT, WHERE, ORDER BY, GROUP BY, HAVING |
| INSERT | Inserire nuovi dati | INSERT INTO |
| UPDATE | Aggiornare dati esistenti | UPDATE SET WHERE |
| DELETE | Cancellare dati | DELETE FROM WHERE |
| DDL | Gestione struttura database | CREATE, ALTER, DROP |
| DCL | Controllo accessi e permessi | GRANT, REVOKE |
Conclusione
Il linguaggio di query è uno strumento indispensabile per chi lavora con i dati. Permette di trasformare informazioni grezze in conoscenza utile, automatizzare processi, analizzare grandi volumi di dati e supportare decisioni aziendali e strategiche. Comprendere SQL significa avere una competenza chiave nell’era digitale.
SQL Interattivo
Guida moderna e interattiva sui connettori logici, JOIN e funzioni aggregate in SQL
Sezioni interattive
Connettori Logici
Permettono di combinare condizioni in SQL:
- AND: tutte le condizioni devono essere vere
- OR: almeno una condizione deve essere vera
- NOT: inverte la condizione
- IN: verifica se un valore appartiene a un insieme
- BETWEEN: verifica se un valore è compreso in un intervallo
- LIKE: ricerca pattern matching
- IS NULL / IS NOT NULL: verifica valori nulli o non nulli
JOIN SQL
I JOIN servono a combinare tabelle:
Il grafico mostra concettualmente il numero di record restituiti da ciascun JOIN.
Funzioni Aggregate
- SUM(): somma valori
- AVG(): media valori
- COUNT(): conta record
- MAX(): massimo valore
- MIN(): minimo valore
Si usano insieme a GROUP BY per aggregare dati per categoria.
🚀 Cos'è SQL?
SQL (spesso pronunciato "sequel" o S-Q-L) è l'acronimo di Structured Query Language. È un linguaggio standard utilizzato per gestire, interrogare e manipolare i dati all'interno di un database relazionale (RDBMS).
In termini semplici, se un database relazionale è un armadio pieno di faldoni organizzati (tabelle), SQL è la lingua che usi per parlare all'addetto (il DBMS - Database Management System) e chiedergli di trovare, aggiungere, modificare o organizzare quei faldoni.
A Cosa Serve?
- Creare e modificare la struttura del database (tabelle, indici, viste).
- Inserire, aggiornare ed eliminare i dati.
- Recuperare i dati in modo mirato e complesso (le *query*).
- Gestire i permessi di accesso ai dati.
🏗️ I Concetti Fondamentali
SQL si basa sul Modello Relazionale, dove i dati sono organizzati in tabelle collegate tra loro.
| Termine SQL | Concetto nel Modello Relazionale | Descrizione |
|---|---|---|
| Tabella | Relazione | Una collezione di dati correlati, composta da righe e colonne. |
| Colonna | Attributo | Definisce il tipo di dati e il nome di un campo (es. *Nome*, *Età*). |
| Riga | Tupla/Record | Un'istanza di dati nella tabella (es. i dati di una singola persona). |
| Chiave Primaria | Identificatore Univoco | Una colonna che identifica in modo univoco ogni riga della tabella. Non può contenere valori duplicati o nulli. |
| Chiave Esterna | Vincolo di Integrità | Una colonna che punta alla Chiave Primaria di un'altra tabella. Stabilisce le relazioni. |
| Query | Interrogazione | L'istruzione SQL che invii al database per recuperare o manipolare dati. |
📋 Categorie di Comandi SQL
1. DDL (Data Definition Language) - Definizione dei Dati
Serve a definire la struttura del database e dei suoi oggetti.
| Comando | Scopo | Esempio |
|---|---|---|
| CREATE | Creare un nuovo database, tabella, indice, vista. | CREATE TABLE Clienti (...) |
| ALTER | Modificare la struttura di un oggetto esistente. | ALTER TABLE Clienti ADD Telefono VARCHAR(15) |
| DROP | Eliminare completamente un oggetto (tabella, indice, ecc.). | DROP TABLE Clienti |
| TRUNCATE | Rimuovere *tutti* i dati da una tabella, mantenendo la sua struttura. | TRUNCATE TABLE Clienti |
2. DML (Data Manipulation Language) - Manipolazione dei Dati
Serve a manipolare i dati all'interno delle tabelle esistenti.
| Comando | Scopo | Esempio |
|---|---|---|
| INSERT | Inserire nuovi record (righe) in una tabella. | INSERT INTO Clienti (Nome) VALUES ('Mario') |
| UPDATE | Modificare i dati esistenti in una o più righe. | UPDATE Clienti SET Città = 'Roma' WHERE ID = 1 |
| DELETE | Eliminare righe specifiche da una tabella. | DELETE FROM Clienti WHERE Nome = 'Mario' |
3. DQL (Data Query Language) - Interrogazione dei Dati
Serve esclusivamente a recuperare dati dal database.
| Comando | Scopo | Esempio |
|---|---|---|
| SELECT | Selezionare e visualizzare dati da una o più tabelle. | SELECT Nome, Città FROM Clienti WHERE ID > 10 |
🔍 La Query SELECT: Il Cuore di SQL
Il comando SELECT è il più potente e flessibile di SQL. La sua sintassi base è:
SELECT colonna1, colonna2, ...
FROM nome_tabella
WHERE condizione;
Interrogazioni Avanzate:
- JOINs: Uniscono righe da due o più tabelle in base a una colonna correlata (es.
INNER JOIN). - Funzioni di Aggregazione: Eseguono calcoli su un insieme di righe e restituiscono un singolo valore (es.
COUNT(),SUM(),AVG()). GROUP BY: Raggruppa le righe per calcolare statistiche per ogni gruppo.HAVING: Filtra i risultati dei gruppi creati conGROUP BY.