🗃️ Tutorial SQL MariaDB

Guida completa e graduale alle query fondamentali

1 📊 Tabella di Riferimento

Per tutti gli esempi di questo tutorial, utilizzeremo la seguente tabella chiamata prodotti.

Modello logico

prodotti(id(PK), nome, categoria, prezzo, quantita, fornitore)

La tabella prodotti con i dati usati in tutti gli esempi:

Tabella prodotti: dati di esempio usati in tutti gli esempi
id nome categoria prezzo quantita fornitore
1 Laptop HP Elettronica 899.99 15 TechStore
2 Mouse Wireless Accessori 29.99 150 TechStore
3 Tastiera Meccanica Accessori 89.99 45 KeyMaster
4 Monitor 27" Elettronica 349.99 22 DisplayPro
5 Webcam HD Accessori 79.99 60 TechStore
6 SSD 1TB Componenti 109.99 35 StoragePlus
7 RAM 16GB Componenti 69.99 80 StoragePlus
8 Stampante Laser Elettronica 199.99 12 PrintWorld
9 Cuffie Bluetooth Accessori 149.99 40 AudioMax
10 Tablet Samsung Elettronica 449.99 18 TechStore
📝 Nota: Questa tabella contiene 10 prodotti con informazioni su nome, categoria, prezzo, quantità disponibile e fornitore. La useremo per tutti gli esempi seguenti.

2 SELECT e FROM

Le istruzioni SELECT e FROM sono le fondamenta di ogni query SQL. SELECT specifica quali colonne vogliamo recuperare, mentre FROM indica da quale tabella prenderle.

SELECT colonna1, colonna2, ...
FROM nome_tabella;

Esempio 1: Selezionare tutte le colonne

L'asterisco (*) è un carattere speciale che significa "tutte le colonne".

Query: Scrivere una query che visualizzi tutte le colonne

SELECT *
FROM prodotti;

Risultato: Restituisce TUTTE le righe e TUTTE le colonne della tabella (vedi tabella di riferimento sopra)

Esempio 2: Selezionare colonne specifiche

È buona pratica selezionare solo le colonne di cui si ha effettivamente bisogno.

Query: Scrivere una query che visualizzi nome e prezzo

SELECT nome, prezzo
FROM prodotti;

Risultato:

nome prezzo
Laptop HP899.99
Mouse Wireless29.99
Tastiera Meccanica89.99
Monitor 27"349.99
Webcam HD79.99
SSD 1TB109.99
RAM 16GB69.99
Stampante Laser199.99
Cuffie Bluetooth149.99
Tablet Samsung449.99

Esempio 3: Selezionare una singola colonna

Query: Scrivere una query che visualizzi la categoria

SELECT categoria
FROM prodotti;

Risultato:

categoria
Elettronica
Accessori
Accessori
Elettronica
Accessori
Componenti
Componenti
Elettronica
Accessori
Elettronica

Esempio 4: SELECT DISTINCT - Valori unici

Usando DISTINCT si eliminano i duplicati dai risultati.

Query: Scrivere una query che visualizzi i valori distinti di categoria

SELECT DISTINCT categoria
FROM prodotti;

Risultato:

categoria
Elettronica
Accessori
Componenti
💡 Consiglio: Evita di usare SELECT * in produzione. Seleziona solo le colonne necessarie per migliorare le prestazioni.

3 WHERE - Filtrare i Risultati

La clausola WHERE permette di filtrare i risultati in base a condizioni specifiche. Solo le righe che soddisfano la condizione vengono restituite.

SELECT colonne
FROM tabella
WHERE condizione;

Operatori di Confronto

Operatore Descrizione Esempio
=Uguale aprezzo = 100
<> o !=Diverso dacategoria <> 'Accessori'
>Maggiore diprezzo > 50
<Minore diquantita < 20
>=Maggiore o ugualeprezzo >= 100
<=Minore o ugualequantita <= 50

Esempio 1: Confronto con valore numerico

Query: Scrivere una query che visualizzi nome e prezzo di prodotti con prezzo maggiore di 100€

SELECT nome, prezzo
FROM prodotti
WHERE prezzo > 100;

Risultato:

nome prezzo
Laptop HP899.99
Monitor 27"349.99
SSD 1TB109.99
Stampante Laser199.99
Cuffie Bluetooth149.99
Tablet Samsung449.99

Esempio 2: Confronto con stringa di testo

I valori testuali devono essere racchiusi tra apici singoli ('') o doppi ("").

Query: Scrivere una query che visualizzi nome, categoria e prezzo di prodotti della categoria "Accessori"

SELECT nome, categoria, prezzo
FROM prodotti
WHERE categoria = 'Accessori';

Risultato:

nome categoria prezzo
Mouse WirelessAccessori29.99
Tastiera MeccanicaAccessori89.99
Webcam HDAccessori79.99
Cuffie BluetoothAccessori149.99

Esempio 3: Condizioni multiple con AND

AND richiede che TUTTE le condizioni siano vere.

Query: Scrivere una query che visualizzi nome, categoria e prezzo di prodotti "Accessori" con prezzo inferiore a 100€

SELECT nome, categoria, prezzo
FROM prodotti
WHERE categoria = 'Accessori'
    AND prezzo < 100;

Risultato:

nome categoria prezzo
Mouse WirelessAccessori29.99
Tastiera MeccanicaAccessori89.99
Webcam HDAccessori79.99

Esempio 4: Condizioni multiple con OR

OR richiede che ALMENO UNA condizione sia vera.

Query: Scrivere una query che visualizzi nome, categoria e prezzo di prodotti "Elettronica" oppure con prezzo minore di 50€

SELECT nome, categoria, prezzo
FROM prodotti
WHERE categoria = 'Elettronica'
    OR prezzo < 50;

Risultato:

nome categoria prezzo
Laptop HPElettronica899.99
Mouse WirelessAccessori29.99
Monitor 27"Elettronica349.99
Stampante LaserElettronica199.99
Tablet SamsungElettronica449.99

Esempio 5: BETWEEN - Intervallo di valori

Query: Scrivere una query che visualizzi nome e prezzo di prodotti con prezzo tra 50€ e 150€

SELECT nome, prezzo
FROM prodotti
WHERE prezzo BETWEEN 50 AND 150;

Risultato:

nome prezzo
Tastiera Meccanica89.99
Webcam HD79.99
SSD 1TB109.99
RAM 16GB69.99
Cuffie Bluetooth149.99

Esempio 6: IN - Lista di valori

Query: Scrivere una query che visualizzi nome e fornitore di prodotti dei fornitori TechStore o StoragePlus

SELECT nome, fornitore
FROM prodotti
WHERE fornitore IN ('TechStore', 'StoragePlus');

Risultato:

nome fornitore
Laptop HPTechStore
Mouse WirelessTechStore
Webcam HDTechStore
SSD 1TBStoragePlus
RAM 16GBStoragePlus
Tablet SamsungTechStore
📝 Nota: In MariaDB, le condizioni WHERE sono case-insensitive di default quando si usano collazioni standard (es. utf8mb4_general_ci, latin1_swedish_ci). Quindi 'accessori' = 'Accessori' è vero. Se hai bisogno di confronti case-sensitive, usa una collazione binaria (es. COLLATE utf8mb4_bin) o la funzione BINARY.

4 AS - Rinominare Colonne (Alias)

La parola chiave AS permette di assegnare un nome temporaneo (alias) a una colonna o a un'espressione nel risultato della query. Questo rende i risultati più leggibili.

SELECT colonna AS nuovo_nome
FROM tabella;

Esempio 1: Alias semplice per una colonna

Query: Scrivere una query che visualizzi nome e prezzo di prodotti della categoria "Componenti", assegnando alla colonna nome l'alias nome_prodotto e alla colonna prezzo l'alias prezzo_euro

SELECT nome AS nome_prodotto, prezzo AS prezzo_euro
FROM prodotti
WHERE categoria = 'Componenti';

Risultato:

nome_prodotto prezzo_euro
SSD 1TB109.99
RAM 16GB69.99

Esempio 2: Alias con spazi (usando apici)

Se l'alias contiene spazi, deve essere racchiuso tra apici o virgolette.

Query: Scrivere una query che visualizzi nome, prezzo e quantita di prodotti con meno di 20 pezzi, assegnando alla colonna nome l'alias 'Nome Prodotto', alla colonna prezzo l'alias 'Prezzo (€)' e alla colonna quantita l'alias 'Pezzi Disponibili'

SELECT
    nome AS 'Nome Prodotto',
    prezzo AS 'Prezzo (€)',
    quantita AS 'Pezzi Disponibili'
FROM prodotti
WHERE quantita < 20;

Risultato:

Nome Prodotto Prezzo (€) Pezzi Disponibili
Laptop HP899.9915
Stampante Laser199.9912
Tablet Samsung449.9918

Esempio 3: Alias per espressioni calcolate

Gli alias sono particolarmente utili quando si creano colonne calcolate.

Query: Scrivere una query che visualizzi nome, prezzo, quantita e il valore di magazzino di prodotti della categoria "Elettronica", assegnando all'espressione prezzo * quantita l'alias valore_magazzino

SELECT
    nome,
    prezzo,
    quantita,
    prezzo * quantita AS valore_magazzino
FROM prodotti
WHERE categoria = 'Elettronica';

Risultato:

nome prezzo quantita valore_magazzino
Laptop HP899.991513499.85
Monitor 27"349.99227699.78
Stampante Laser199.99122399.88
Tablet Samsung449.99188099.82
💡 Consiglio: La parola chiave AS è opzionale: puoi scrivere SELECT nome prodotto invece di SELECT nome AS prodotto. Tuttavia, usare AS rende il codice più leggibile.

5 ORDER BY - Ordinare i Risultati

La clausola ORDER BY permette di ordinare i risultati in base a una o più colonne. L'ordinamento può essere ascendente (ASC) o discendente (DESC).

SELECT colonne
FROM tabella
ORDER BY colonna [ASC|DESC];

Esempio 1: Ordinamento ascendente (predefinito)

Query: Scrivere una query che visualizzi nome e prezzo di prodotti ordinati per prezzo (dal più economico)

SELECT nome, prezzo
FROM prodotti
ORDER BY prezzo ASC;

Risultato:

nome prezzo
Mouse Wireless29.99
RAM 16GB69.99
Webcam HD79.99
Tastiera Meccanica89.99
SSD 1TB109.99
Cuffie Bluetooth149.99
Stampante Laser199.99
Monitor 27"349.99
Tablet Samsung449.99
Laptop HP899.99

Esempio 2: Ordinamento discendente

Query: Scrivere una query che visualizzi nome e quantita di prodotti ordinati per quantità (dalla più alta)

SELECT nome, quantita
FROM prodotti
ORDER BY quantita DESC;

Risultato:

nome quantita
Mouse Wireless150
RAM 16GB80
Webcam HD60
Tastiera Meccanica45
Cuffie Bluetooth40
SSD 1TB35
Monitor 27"22
Tablet Samsung18
Laptop HP15
Stampante Laser12

Esempio 3: Ordinamento su più colonne

È possibile ordinare per più colonne: prima si ordina per la prima colonna, poi per la seconda in caso di valori uguali.

Query: Scrivere una query che visualizzi nome, categoria e prezzo di prodotti ordinati per categoria, poi per prezzo

SELECT nome, categoria, prezzo
FROM prodotti
ORDER BY categoria ASC, prezzo DESC;

Risultato:

nome categoria prezzo
Cuffie BluetoothAccessori149.99
Tastiera MeccanicaAccessori89.99
Webcam HDAccessori79.99
Mouse WirelessAccessori29.99
SSD 1TBComponenti109.99
RAM 16GBComponenti69.99
Laptop HPElettronica899.99
Tablet SamsungElettronica449.99
Monitor 27"Elettronica349.99
Stampante LaserElettronica199.99

Esempio 4: Ordinamento alfabetico

Query: Scrivere una query che visualizzi nome e fornitore di prodotti in ordine alfabetico

SELECT nome, fornitore
FROM prodotti
ORDER BY nome ASC;

Risultato:

nome fornitore
Cuffie BluetoothAudioMax
Laptop HPTechStore
Monitor 27"DisplayPro
Mouse WirelessTechStore
RAM 16GBStoragePlus
SSD 1TBStoragePlus
Stampante LaserPrintWorld
Tablet SamsungTechStore
Tastiera MeccanicaKeyMaster
Webcam HDTechStore
📝 Nota: Se non specifichi ASC o DESC, l'ordinamento predefinito è ASC (ascendente).

6 LIMIT - Limitare i Risultati

La clausola LIMIT permette di limitare il numero di righe restituite dalla query. È utile per la paginazione o per visualizzare solo i primi N risultati.

SELECT colonne
FROM tabella
LIMIT numero;

SELECT colonne
FROM tabella
LIMIT offset, numero;

Esempio 1: Primi N risultati

Query: Scrivere una query che visualizzi nome e prezzo dei 5 prodotti più costosi

SELECT nome, prezzo
FROM prodotti
ORDER BY prezzo DESC
LIMIT 5;

Risultato:

nome prezzo
Laptop HP899.99
Tablet Samsung449.99
Monitor 27"349.99
Stampante Laser199.99
Cuffie Bluetooth149.99

Esempio 2: I 3 prodotti più economici

Query: Scrivere una query che visualizzi nome e prezzo dei 3 prodotti più economici

SELECT nome, prezzo
FROM prodotti
ORDER BY prezzo ASC
LIMIT 3;

Risultato:

nome prezzo
Mouse Wireless29.99
RAM 16GB69.99
Webcam HD79.99

Esempio 3: LIMIT con OFFSET (paginazione)

L'offset indica quante righe saltare prima di iniziare a restituire i risultati. Sintassi: LIMIT offset, count

Query: Scrivere una query che visualizzi nome e prezzo di prodotti dalla posizione 4 alla 6 (salta i primi 3)

SELECT nome, prezzo
FROM prodotti
ORDER BY prezzo DESC
LIMIT 3, 3;

Risultato: (salta i primi 3, mostra i successivi 3)

nome prezzo
Stampante Laser199.99
Cuffie Bluetooth149.99
SSD 1TB109.99
💡 Paginazione: Per implementare la paginazione (es. 10 elementi per pagina):
  • Pagina 1: LIMIT 0, 10
  • Pagina 2: LIMIT 10, 10
  • Pagina 3: LIMIT 20, 10
Formula: LIMIT (pagina - 1) * elementi_per_pagina, elementi_per_pagina

7 LIKE - Ricerca con Pattern

L'operatore LIKE permette di cercare valori che corrispondono a un pattern (modello). Si usa con due caratteri speciali chiamati wildcard:

Wildcard Descrizione Esempio
% Rappresenta zero, uno o più caratteri qualsiasi 'Ma%' trova "Mario", "Maria", "Marta"
_ Rappresenta esattamente un singolo carattere 'M_rio' trova "Mario" ma non "Maria"
SELECT colonne
FROM tabella
WHERE colonna LIKE 'pattern';

Esempio 1: Inizia con... (prefisso)

Query: Scrivere una query che visualizzi nome e categoria di prodotti il cui nome inizia con "S"

SELECT nome, categoria
FROM prodotti
WHERE nome LIKE 'S%';

Risultato:

nome categoria
SSD 1TBComponenti
Stampante LaserElettronica

Esempio 2: Finisce con... (suffisso)

Query: Scrivere una query che visualizzi nome e categoria di prodotti il cui nome finisce con "B"

SELECT nome, categoria
FROM prodotti
WHERE nome LIKE '%B';

Risultato:

nome categoria
SSD 1TBComponenti
RAM 16GBComponenti

Esempio 3: Contiene... (sottostringa)

Query: Scrivere una query che visualizzi nome e prezzo di prodotti che contengono "Blue" nel nome

SELECT nome, prezzo
FROM prodotti
WHERE nome LIKE '%Blue%';

Risultato:

nome prezzo
Cuffie Bluetooth149.99

Esempio 4: Pattern più complessi

Query: Scrivere una query che visualizzi il nome di prodotti che contengono "a" nel nome

SELECT nome
FROM prodotti
WHERE nome LIKE '%a%';

Risultato:

nome
Laptop HP
Tastiera Meccanica
Webcam HD
Stampante Laser
Tablet Samsung

Esempio 5: Usando underscore (_)

Query: Scrivere una query che visualizzi il nome di prodotti con esattamente 5 caratteri dopo "RAM"

SELECT nome
FROM prodotti
WHERE nome LIKE '%RAM-----';

Risultato:

nome
RAM 16GB

Esempio 6: NOT LIKE - Escludere pattern

Query: Scrivere una query che visualizzi il nome di prodotti che NON iniziano con "M"

SELECT nome
FROM prodotti
WHERE nome NOT LIKE 'M%';

Risultato:

nome
Laptop HP
Tastiera Meccanica
Webcam HD
SSD 1TB
RAM 16GB
Stampante Laser
Cuffie Bluetooth
Tablet Samsung
⚠️ Attenzione: L'operatore LIKE può essere lento su grandi dataset, specialmente con pattern che iniziano con % (es. '%testo'). In questi casi, considera l'uso di uno strumento più avanzato come gli indici FULLTEXT (https://www.mrw.it/lez/ricerche-full-text-mysql/).

8 Funzioni Aggregate: MIN, MAX, AVG, SUM, COUNT

Le funzioni aggregate eseguono calcoli su un insieme di valori e restituiscono un singolo risultato. Sono fondamentali per l'analisi dei dati.

Funzione Descrizione
MIN()Restituisce il valore minimo
MAX()Restituisce il valore massimo
AVG()Calcola la media aritmetica
SUM()Calcola la somma totale
COUNT()Conta il numero di righe

MIN() - Valore Minimo

Query: Scrivere una query che visualizzi il prezzo più basso

SELECT MIN(prezzo) AS prezzo_minimo
FROM prodotti;

Risultato:

prezzo_minimo
29.99

Query: Scrivere una query che visualizzi il prezzo minimo di prodotti della categoria "Elettronica"

SELECT MIN(prezzo) AS prezzo_minimo
FROM prodotti
WHERE categoria = 'Elettronica';

Risultato:

prezzo_minimo
199.99

MAX() - Valore Massimo

Query: Scrivere una query che visualizzi il prezzo più alto e la quantità massima

SELECT
    MAX(prezzo) AS prezzo_massimo,
    MAX(quantita) AS quantita_massima
FROM prodotti;

Risultato:

prezzo_massimo quantita_massima
899.99150

AVG() - Media

Query: Scrivere una query che visualizzi il prezzo medio di tutti i prodotti

SELECT AVG(prezzo) AS prezzo_medio
FROM prodotti;

Risultato:

prezzo_medio
242.9900
📝 Nota: su una colonna DECIMAL MariaDB restituisce la media con 4 decimali (242.9900). Per mostrarla con 2 decimali si usa ROUND(AVG(prezzo), 2), come nell'esempio successivo.

Query: Scrivere una query che visualizzi il prezzo medio arrotondato con ROUND()

SELECT ROUND(AVG(prezzo), 2) AS prezzo_medio
FROM prodotti;

Risultato:

prezzo_medio
242.99

SUM() - Somma

Query: Scrivere una query che visualizzi il valore totale del magazzino

SELECT SUM(prezzo * quantita) AS valore_totale_magazzino
FROM prodotti;

Risultato:

valore_totale_magazzino
60495.23

Query: Scrivere una query che visualizzi la quantità totale di prodotti della categoria "Accessori"

SELECT SUM(quantita) AS totale_pezzi
FROM prodotti
WHERE categoria = 'Accessori';

Risultato:

totale_pezzi
295

COUNT() - Conteggio

Query: Scrivere una query che visualizzi il numero totale di prodotti

SELECT COUNT(*) AS numero_prodotti
FROM prodotti;

Risultato:

numero_prodotti
10

Query: Scrivere una query che visualizzi il numero di prodotti del fornitore TechStore

SELECT COUNT(*) AS prodotti_techstore
FROM prodotti
WHERE fornitore = 'TechStore';

Risultato:

prodotti_techstore
4

Combinare più funzioni aggregate

Query: Scrivere una query che visualizzi il numero di prodotti, il prezzo minimo, il prezzo massimo, il prezzo medio e la quantità totale

SELECT
    COUNT(*) AS totale_prodotti,
    MIN(prezzo) AS prezzo_minimo,
    MAX(prezzo) AS prezzo_massimo,
    ROUND(AVG(prezzo), 2) AS prezzo_medio,
    SUM(quantita) AS totale_pezzi
FROM prodotti;

Risultato:

totale_prodotti prezzo_minimo prezzo_massimo prezzo_medio totale_pezzi
10 29.99 899.99 242.99 477
📝 Nota: COUNT(*) conta tutte le righe, incluse quelle con valori NULL. COUNT(colonna) conta solo le righe dove quella specifica colonna non è NULL.

9 Query Combinate - Esempi Avanzati

Ora mettiamo insieme tutte le clausole apprese per creare query più complesse e utili nella pratica.

Esempio 1: Report prodotti economici

Query: Scrivere una query che visualizzi nome, prezzo e quantita dei 3 prodotti più economici della categoria Accessori, ordinati per prezzo

SELECT
    nome AS 'Nome Prodotto',
    prezzo AS 'Prezzo (€)',
    quantita AS 'Disponibilità'
FROM prodotti
WHERE categoria = 'Accessori'
ORDER BY prezzo ASC
LIMIT 3;

Risultato:

Nome Prodotto Prezzo (€) Disponibilità
Mouse Wireless29.99150
Webcam HD79.9960
Tastiera Meccanica89.9945

Esempio 2: Ricerca con pattern e ordinamento

Query: Scrivere una query che visualizzi nome, prezzo, quantita e il valore di magazzino di prodotti che contengono numeri nel nome, ordinati per valore magazzino

SELECT
    nome,
    prezzo,
    quantita,
    prezzo * quantita AS valore_magazzino
FROM prodotti
WHERE nome LIKE '%1%'
    OR nome LIKE '%2%'
ORDER BY valore_magazzino DESC;

Risultato:

nome prezzo quantita valore_magazzino
Monitor 27"349.99227699.78
RAM 16GB69.99805599.20
SSD 1TB109.99353849.65

Esempio 3: Statistiche filtrate

Query: Scrivere una query che visualizzi il numero di prodotti, il prezzo minimo, il prezzo massimo, il prezzo medio e la quantità totale di prodotti con prezzo tra 50€ e 200€

SELECT
    COUNT(*) AS numero_prodotti,
    MIN(prezzo) AS min_prezzo,
    MAX(prezzo) AS max_prezzo,
    ROUND(AVG(prezzo), 2) AS media_prezzo,
    SUM(quantita) AS totale_pezzi
FROM prodotti
WHERE prezzo BETWEEN 50 AND 200;

Risultato:

numero_prodotti min_prezzo max_prezzo media_prezzo totale_pezzi
6 69.99 199.99 116.66 272

Esempio 4: Query complessa con tutte le clausole

Query: Scrivere una query che visualizzi id, nome, categoria, prezzo, quantita e il valore totale dei 3 prodotti più costosi di TechStore con "a" nel nome

SELECT
    id AS codice,
    nome AS prodotto,
    categoria,
    prezzo AS 'prezzo_unitario',
    quantita,
    prezzo * quantita AS valore_totale
FROM prodotti
WHERE fornitore = 'TechStore'
    AND nome LIKE '%a%'
ORDER BY prezzo DESC
LIMIT 3;

Risultato:

codice prodotto categoria prezzo_unitario quantita valore_totale
1 Laptop HP Elettronica 899.99 15 13499.85
10 Tablet Samsung Elettronica 449.99 18 8099.82
5 Webcam HD Accessori 79.99 60 4799.40
💡 Ordine delle clausole SQL:

L'ordine corretto delle clausole in una query SELECT è:

  1. SELECT - quali colonne
  2. FROM - da quale tabella
  3. WHERE - condizioni di filtro
  4. ORDER BY - ordinamento
  5. LIMIT - limitazione risultati

10 📝 Esercizi

Prova a risolvere questi esercizi da solo, usando la tabella prodotti della sezione 1. Apri la soluzione solo dopo aver provato.

Esercizio 1 Base

Mostra nome e prezzo dei prodotti che costano più di 100€.

Mostra Soluzione
SELECT nome, prezzo
FROM prodotti
WHERE prezzo > 100;

Esercizio 2 Base

Mostra nome e prezzo dei 3 prodotti più costosi, dal più caro al meno caro.

Mostra Soluzione
SELECT nome, prezzo
FROM prodotti
ORDER BY prezzo DESC
LIMIT 3;

Esercizio 3 Intermedio

Mostra nome, categoria e quantità dei prodotti della categoria "Accessori" che hanno meno di 100 pezzi disponibili.

Mostra Soluzione
SELECT nome, categoria, quantita
FROM prodotti
WHERE categoria = 'Accessori'
    AND quantita < 100;

Esercizio 4 Intermedio

Mostra nome, prezzo, quantità e il valore di magazzino (prezzo * quantita) dei prodotti "Elettronica", assegnando all'espressione l'alias valore_magazzino.

Mostra Soluzione
SELECT
    nome,
    prezzo,
    quantita,
    prezzo * quantita AS valore_magazzino
FROM prodotti
WHERE categoria = 'Elettronica';

Esercizio 5 Avanzato

Mostra il numero di prodotti, il prezzo minimo, il prezzo massimo e il prezzo medio.

Mostra Soluzione
SELECT
    COUNT(*) AS numero_prodotti,
    MIN(prezzo) AS prezzo_minimo,
    MAX(prezzo) AS prezzo_massimo,
    ROUND(AVG(prezzo), 2) AS prezzo_medio
FROM prodotti;

Esercizio 6 Avanzato

Mostra nome, prezzo e fornitore dei prodotti che contengono la lettera "a" nel nome, ordinati per prezzo crescente e limitati ai primi 5.

Mostra Soluzione
SELECT nome, prezzo, fornitore
FROM prodotti
WHERE nome LIKE '%a%'
ORDER BY prezzo
LIMIT 5;

Scrivi la query e il trainer la esegue davvero, controlla il risultato e ti dice se è corretto. Gli esercizi usano solo le clausole di questa guida (sezioni 2–9) e una sola tabella per volta. Ogni esercizio nasce da uno schema diverso da quello della tabella prodotti della teoria, con dati nuovi: la tecnica è la stessa, i nomi no.