Torna all'elenco degli articoli Articoli
Tempo di lettura: 13 minuti

20 esercizi di SQL WHERE per principianti

Indice

In SQL, la clausola WHERE filtra i dati in base a condizioni definite. Continuate a leggere per seguire 20 esercizi WHERE con spiegazioni e soluzioni adatte ai principianti.

In questo articolo rivedremo alcuni dei nostri esercizi WHERE di SQL. Inizieremo spiegando la sintassi di base, quindi esamineremo 20 esercizi per principianti tratti dai corsi SQL elencati di seguito. Questi esercizi coprono i principali usi della clausola WHERE e sono perfetti per esercitarsi con l'SQL. Troverete altre informazioni in questi corsi:

Ogni corso ha sezioni separate per i diversi argomenti di SQL e utilizza un database diverso per farvi fare pratica con l'SQL. La pratica rende perfetti ed è il modo migliore per migliorare le vostre competenze SQL a un nuovo livello.

Senza ulteriori indugi, iniziamo.

SQL WHERE Clause Essentials

La clausola SQL WHERE definisce le condizioni per filtrare i dati. In altre parole, consente di recuperare solo i dati che soddisfano criteri specifici. Includendo la clausola WHERE nell'istruzione SELECT, UPDATE, DELETE, o in un'altra istruzione SQL, è possibile restringere il set di dati in uscita per includere solo i dati rilevanti.

Il filtraggio dei dati è essenziale per una gestione e un'analisi efficiente dei dati. Consente di estrarre solo le informazioni necessarie da grandi insiemi di dati, riducendo il volume dei dati elaborati e migliorando le prestazioni delle query.

La clausola WHERE utilizza diversi strumenti per confrontare e filtrare i dati, tra cui gli operatori di confronto, la corrispondenza dei pattern per confrontare i valori con pattern specifici e gli operatori logici per combinare più condizioni.

Nell'istruzione SELECT, la clausola WHERE viene inserita dopo le clausole SELECT e FROM:

SELECT id, name, age
FROM persons
WHERE age > 18;

Rapido ripasso: La clausola SELECT elenca le colonne da presentare nell'output e la clausola FROM definisce la tabella da cui vengono interrogati i dati. La clausola WHERE specifica la condizione del filtro. In questo caso, selezioniamo solo le persone la cui età è superiore a 18 anni. Per saperne di più su come scrivere la clausola WHERE in SQL, si veda qui.

Le sezioni seguenti contengono esercizi pratici di SQL WHERE che riguardano le seguenti applicazioni:

  • Filtrare valori numerici.
  • Filtrare valori di testo.
  • Filtrare i valori booleani.
  • Filtrare i valori NULL.
  • Combinazione di più condizioni.

Per avere accesso all'ambiente di pratica, ai database di esempio e a un numero ancora maggiore di esercitazioni su WHERE, vi invito a iscrivervi al corso completo.

Esercitazioni su SQL WHERE con valori numerici

Gli esercizi di questa sezione provengono dal corso Pratica su SQL: Università. Ecco il diagramma del database universitario utilizzato nei seguenti esercizi:

È troppo breve per essere un titolo H2 a sé stante. Si consiglia di aggiungerlo alla clausola WHERE Essentials H2 se non si vuole che faccia parte dell'intestazione H2 Esercizi numerici.

Esercizi pratici su SQL WHERE per principianti

Esercizio 1: Visualizzazione di informazioni per un docente specifico

Domanda: Visualizzare tutti i dati relativi al docente il cui ID è uguale a 8.

Soluzione:

SELECT *
FROM lecturer
WHERE id = 8;

Spiegazione: Poiché vogliamo visualizzare tutti i dati di questo docente, selezioniamo tutte le colonne della tabella. lecturer tabella. Questo si ottiene con SELECT * FROM lecturer.

Siamo interessati ai dati relativi al docente con ID 8. Pertanto, lo specifichiamo come condizione nella clausola WHERE: id = 8.

Esercizio 2: Selezionare gli studenti con punteggio pari o superiore a 95

Domanda: Visualizzare l'ID dello studente, il voto finale e il voto in lettere per ogni corso in cui lo studente ha ottenuto un voto finale di 95 o superiore.

Soluzione:

SELECT
  student_id,
  final_grade,
  course_letter_grade
FROM course_enrollment
WHERE final_grade >= 95;

Spiegazione: Si desidera visualizzare l'ID dello studente, il voto finale e il voto in lettere per ogni iscrizione al corso. Pertanto, selezioniamo solo queste colonne dalla course_enrollment tabella.

Vogliamo visualizzare solo le righe di dati in cui il voto finale è uguale o superiore a 95. Per ottenere questo risultato, definiamo una condizione nella clausola WHERE come final_grade >= 95.

Esercizio 3: Selezionare tutti gli studenti tranne uno

Domanda: Visualizzare tutti i dati degli studenti con un ID diverso da 1.

Soluzione:

SELECT *
FROM student
WHERE id != 1;

Spiegazione: Anche in questo caso vogliamo selezionare tutti i dati dalla student quindi utilizziamo il segno dell'asterisco (*) che indica tutte le colonne disponibili.

Poiché vogliamo visualizzare i dati di tutti gli studenti tranne quelli con l'ID 1, definiamo nella clausola WHERE la condizione che l'ID non sia uguale a 1: id != 1.

Esercizio 4: Elencare tutti i corsi di valore inferiore a 3 ECTS

Domanda: Mostrare tutti i corsi con meno di 3 punti ECTS. Visualizzare due colonne: title e ects_points.

Soluzione:

SELECT
  title,
  ects_points
FROM course
WHERE ects_points < 3;

Spiegazione: Selezioniamo dalla tabella i titoli dei corsi e il loro valore in punti ECTS. course tabella. Per visualizzare solo i corsi di valore inferiore a 3 punti ECTS, definiamo la condizione della clausola WHERE come ects_points < 3.

Esercizi SQL WHERE con valori di testo

Gli esercizi di questa sezione provengono dal corso Pratica su SQL: Store. Ecco il diagramma del database del negozio :

Esercizi pratici su SQL WHERE per principianti

Esercizio 5: Trovare la descrizione di una categoria di prodotti

Domanda: Trovare la descrizione della categoria con il nome "Alcool".

Soluzione:

SELECT description
FROM category
WHERE name = 'Alcohol';

Spiegazione: Vogliamo visualizzare la descrizione di una categoria di prodotti, quindi selezioniamo la colonna description dalla tabella. category tabella. Poiché siamo interessati alla descrizione della categoria alcolici, definiamo la condizione nella clausola WHERE come name = 'Alcohol'.

Si noti che in SQL i letterali di stringa ("Alcol") devono essere racchiusi tra apici singoli (').

Esercizio 6: Elencare tutti i clienti il cui indirizzo e-mail corrisponde allo schema

Domanda: Visualizzare tutti i dati dei clienti il cui indirizzo e-mail termina con '.com'.

Soluzione:

SELECT *
FROM customer
WHERE contact_email LIKE '%.com';

Spiegazione: Selezioniamo tutti i clienti dalla tabella customer tabella.

Vogliamo elencare solo i clienti il cui indirizzo e-mail termina con '.com'. Per ottenere questo risultato, utilizzeremo la corrispondenza dei modelli. Nella clausola WHERE definiamo una condizione come contact_email LIKE '%.com'. Nel pattern matching SQL, il segno % indica una qualsiasi sequenza di caratteri.

L'operatore LIKE viene utilizzato per confrontare l'operando di sinistra (di solito il valore della colonna) con l'operando di destra (lo schema da abbinare). Se il valore corrisponde allo schema, la condizione viene superata, altrimenti fallisce.

Per saperne di più sull'uso di LIKE in SQL, consultare il sito.

Esercizio 7: Trovare i dipendenti il cui cognome corrisponde allo schema

Domanda: Non si ricorda esattamente il cognome di un dipendente. Era Mixer, Fixer, Bixer o qualcos'altro? Visualizzare i dati di tutti i dipendenti il cui cognome inizia con una lettera ed è seguito da "ixer".

Soluzione:

SELECT *
FROM employee
WHERE last_name LIKE '_ixer';

Spiegazione: Selezioniamo tutte le colonne della tabella employee tabella.

Poiché vogliamo trovare i dipendenti il cui cognome termina con 'ixer', utilizziamo nuovamente la corrispondenza di pattern. Nella clausola WHERE, definiamo la condizione come last_name LIKE '_ixer'. Il segno _ indica un carattere.

Esercizio 8: Elencare tutti i prodotti il cui nome contiene un trattino

Domanda: Mostrare tutti i dati dei prodotti il cui nome contiene un trattino (-).

Soluzione:

SELECT *
FROM product
WHERE product_name LIKE '%-%';

Spiegazione: Selezioniamo tutte le colonne della tabella product tabella. Nella clausola WHERE, definiamo la condizione come product_name LIKE '%-%'. Il segno % indica una sequenza o un numero di caratteri qualsiasi.

Esercizi di pratica WHERE con valori booleani

Gli esercizi di questa sezione provengono dal corso Pratica su SQL: Università. Ecco il diagramma del database universitario:

Esercizi pratici su SQL WHERE per principianti

Esercizio 9: Elenco di tutti i corsi che terminano con un esame finale

Domanda: Visualizzare tutti i dati dei corsi che prevedono un esame finale (colonna has_exam). Si noti che la colonna has_exam memorizza valori booleani (true o false).

Soluzione:

SELECT *
FROM course
WHERE has_exam IS TRUE;

Spiegazione: Selezioniamo tutte le colonne della tabella course tabella.

Poiché vogliamo elencare solo i corsi che terminano con un esame finale, definiamo la condizione WHERE come has_exam IS TRUE.

Esercizio 10: Elencare tutti i corsi che non hanno un progetto finale

Domanda: Mostrare tutti i dati dei corsi che non hanno un progetto finale (colonna has_project). Si noti che la colonna has_project memorizza valori booleani (true o false).

Soluzione:

SELECT *
FROM course
WHERE has_project IS FALSE;

Spiegazione: Anche in questo caso selezioniamo tutte le colonne della course tabella. Questa volta, vogliamo elencare tutti i corsi che non hanno un progetto finale. Definiamo la condizione della clausola WHERE come has_project IS FALSE.

Esercizio 11: Selezionare tutti gli studenti che hanno superato gli esami finali

Domanda: Visualizzare gli ID di tutti gli studenti che hanno superato l'esame finale. Includere la colonna passed nei risultati. Si noti che la colonna passed memorizza valori booleani (true o false).

Soluzione:

SELECT
  student_id,
  passed
FROM course_enrollment
WHERE passed IS TRUE;

Spiegazione: Si vuole visualizzare la colonna che contiene gli ID degli studenti e la colonna che contiene le informazioni sul superamento degli esami finali da parte degli studenti. Selezioniamo queste colonne dalla course_enrollment dalla tabella.

Nella clausola WHERE, definiamo la condizione passed IS TRUE per filtrare solo gli studenti che hanno superato gli esami finali.

Esercizio 12: Selezionare gli studenti che non hanno superato gli esami finali

Domanda: Visualizzare gli ID e i voti finali di tutti gli studenti che non hanno superato l'esame finale. Ricordare che la colonna passed memorizza valori booleani (true o false).

Soluzione:

SELECT
  student_id,
  final_grade
FROM course_enrollment
WHERE passed IS FALSE;

Spiegazione: Si vogliono visualizzare le colonne che contengono gli ID degli studenti e il voto finale. Selezioniamo queste colonne dalla course_enrollment tabella. Nella clausola WHERE, definiamo la condizione passata IS FALSE per filtrare solo gli studenti che non hanno superato gli esami finali.

Esercitazioni WHERE con valori NULL

Gli esercizi di questa sezione provengono dal corso Pratica su SQL: Store. Ecco il diagramma del database del negozio:

Esercizi pratici su SQL WHERE per principianti

Esercizio 13: Selezionare le categorie senza descrizione

Domanda: Visualizzare tutte le categorie prive di descrizione.

Soluzione:

SELECT *
FROM category
WHERE description IS NULL;

Spiegazione: Si selezionano tutte le colonne della tabella category che contiene le categorie dei prodotti.

Poiché vogliamo elencare solo le categorie che non hanno alcuna descrizione, dobbiamo fornire la condizione WHERE description IS NULL ; NULL significa che non c'è alcun valore in quella colonna.

Ci si può chiedere perché si usa IS NULL invece di = NULL. È perché NULL sta per nessun valore; non possiamo verificare se il valore è uguale a NULL perché non c'è alcun valore da confrontare. IS NULL ci permette di verificare se un valore è (o non è) presente.

Esercizio 14: Trovare tutti i clienti di un'azienda

Domanda: Visualizzare tutti i dati dei clienti il cui nome dell'azienda non è NULL.

Soluzione:

SELECT *
FROM customer
WHERE company_name IS NOT NULL;

Spiegazione: Selezioniamo tutte le colonne della tabella customer della tabella. Poiché vogliamo elencare tutti i clienti associati a un'azienda, definiamo la condizione della clausola WHERE come company_name IS NOT NULL. Questo è abbastanza esplicito, perché è quello che diremmo in parole povere.

Esercizio 15: Trovare gli acquisti con un indirizzo sconosciuto

Domanda: Visualizzare l'ID dell'acquisto, l'ID del cliente e l'ID del dipendente per gli acquisti con un indirizzo di spedizione sconosciuto.

Soluzione:

SELECT
  purchase_id,
  customer_id,
  employee_id
FROM purchase
WHERE ship_address IS NULL;

Spiegazione: Vogliamo visualizzare l'ID acquisto, l'ID cliente e l'ID dipendente, quindi selezioniamo queste colonne dalla tabella. purchase tabella.

Poi, vogliamo elencare solo gli acquisti con un indirizzo di spedizione sconosciuto, che equivale al valore NULL. Quindi la condizione della clausola WHERE è ship_address IS NULL.

Esercizio 16: Elencare tutte le categorie di genitori

Domanda: Visualizzare i nomi di tutte le categorie genitore, ossia le categorie che non hanno alcuna categoria genitore.

Soluzione:

SELECT name
FROM category
WHERE parent_category_id IS NULL;

Spiegazione: Vogliamo visualizzare i nomi delle categorie, quindi selezioniamo la colonna nome dalla tabella delle categorie.

Per selezionare solo le categorie padre, definiamo la condizione WHERE come parent_category_id IS NULL. Questo segue l'istruzione che le categorie genitore sono quelle a cui non è stata assegnata alcuna categoria genitore.

Uso di WHERE con condizioni di filtraggio multiple

Gli esercizi di questa sezione provengono dal corso Pratica su SQL: Blog. Ecco il diagramma del database:

Esercizi pratici su SQL WHERE per principianti

Esercizio 17: Selezionare tutti gli articoli di marzo 2020

Domanda: Visualizzare gli URL e i titoli di tutti gli articoli (colonne url e title ) la cui data di pubblicazione è marzo 2020.

Soluzione:

SELECT
  url,
  title
FROM article
WHERE publication_date >= '2020-03-01' 
AND publication_date < '2020-04-01';

Spiegazione: Vogliamo visualizzare gli URL e i titoli degli articoli, quindi selezioniamo le colonne appropriate dalla tabella. article tabella.

Poiché siamo interessati solo agli articoli di marzo 2020, abbiamo definito la condizione della clausola WHERE per garantire che ogni articolo selezionato sia stato pubblicato il 1° marzo 2020 o dopo tale data e prima del 1° aprile 2020. Per unire queste condizioni utilizziamo l'operatore logico AND: publication_date >= '2020-03-01' AND publication_date < '2020-04-01'.

Le date sono solitamente memorizzate in tipi di dati speciali come DATE, DATETIME, o TIMESTAMP. Per confrontare una colonna di date con un valore di data specifico, si utilizzano operatori di confronto standard come =, <, >, <=, >=, o BETWEEN. Il formato della data in SQL è tipicamente YYYY-MM-DD, che sta per anno, mese e giorno. I valori delle parti di data sono separati da trattini.

Si noti che i letterali di confronto tra date devono essere racchiusi tra apici singoli (publication_date >= '2020-03-01').

Esercizio 18: Trovare il traffico di giugno per un dato articolo

Domanda: Trovare le informazioni sul traffico dell'articolo '/blog/puppy-training-techniques/' nel mese di giugno 2020. Visualizzare visit_date e il numero di visualizzazioni in quel giorno.

Soluzione:

SELECT 
  visit_date,
  views
FROM article_traffic
WHERE url = '/blog/puppy-training-techniques/'
AND visit_date >= '2020-06-01' 
AND visit_date < '2020-07-01';

Spiegazione: Selezioniamo dalla tabella la data della visita e il numero di visualizzazioni al giorno. article_traffic tabella.

Vogliamo visualizzare il traffico di un articolo specifico. Pertanto, filtriamo questo articolo utilizzando il suo URL: url = '/blog/puppy-training-techniques/'. Notare le virgolette singole intorno al valore di confronto.

Poiché siamo interessati al traffico del mese di giugno 2020, imponiamo altre due condizioni WHERE sulla colonna visit_date. Queste condizioni restituiranno solo le informazioni sul traffico di giugno: visit_date >= '2020-06-01' AND visit_date < '2020-07-01'.

Questa volta, la clausola WHERE comprende tre condizioni, tutte combinate con gli operatori logici AND.

Esercizio 19: Elencare gli articoli per un autore e una categoria

Domanda: Restituire l'URL di tutti gli articoli di Lewis Goodwin (ID autore = 16) della categoria 3 ("Salute del cane") o della categoria 6 ("Idee regalo per cani").

Soluzione:

SELECT url
FROM article
WHERE author_id = 16
AND (article_category_id = 3 OR article_category_id = 6);

Spiegazione: Si vuole visualizzare l'URL di articoli specifici della tabella article tabella.

Per prima cosa, si vogliono elencare gli articoli scritti dall'autore con un ID pari a 16. Questa è la prima condizione della clausola WHERE: author_id = 16.

Vogliamo inoltre elencare solo gli articoli della categoria 3 o della categoria 6. Dobbiamo creare una condizione composta con l'operatore logico OR e racchiuderla tra parentesi: (article_category_id = 3 OR article_category_id = 6).

Infine, combiniamo queste due condizioni con l'operatore logico AND.

Esercizio 20: Mostrare i dati sul traffico di un articolo specifico

Domanda: Restituire tutti i dati sul traffico degli articoli al 1° dicembre 2020 in cui il numero di visualizzazioni è compreso tra 50 e 100 (cioè 50 <= visualizzazioni <= 100).

Soluzione:

SELECT *
FROM article_traffic
WHERE views <= 100
AND views >= 50
AND visit_date = '2020-12-01';

Spiegazione: Selezioniamo tutte le colonne della tabella article_traffic tabella.

Vogliamo visualizzare i dati sul traffico degli articoli con un numero di visualizzazioni compreso tra 50 e 100, quindi definiamo la condizione della clausola combinata WHERE come views <= 100 AND views >= 50.

Poiché siamo interessati ai dati dal 1° dicembre 2020, definiamo un'altra condizione di clausola WHERE: visit_date = '2020-12-01'.

Query On con la pratica di SQL WHERE!

In questo articolo sono state presentate tutte le nozioni di base della clausola SQL WHERE. Gli esercizi pratici riguardano il filtraggio di valori numerici, testuali, booleani e NULL e la combinazione di più condizioni per ottenere opzioni di filtraggio più complesse. Potete trovare altri articoli con esercizi pratici di SQL qui.

Tutti questi corsi sono disponibili nel nostro percorso Pratica su SQL , dove troverete ancora più pratica di SQL. Per fare pratica al massimo, il nostro pacchetto Completo per sempre SQL vi dà accesso a vita a tutti i nostri corsi attuali e futuri con un unico acquisto.

La pratica rende perfetti! Buon viaggio in SQL!