ConceptStep · piattaforma didattica per l'informatica

Ricerche avanzate: LIKE, IN, BETWEEN e NULL

SQL e database · Lezione

SQL · Lezione 4 / 8 · Laboratorio SQLite

Ricerche avanzate: LIKE, IN, BETWEEN e NULL

Cerca frammenti di testo, seleziona più valori, lavora con intervalli e impara a distinguere NULL da zero e stringa vuota.

← Torna al percorso SQL

Prima di iniziare

Le lezioni usano biblioteca.db: una tabella libri con otto record. Nel laboratorio a destra puoi provare subito le query e scaricare lo stesso database per continuare con DB Browser for SQLite.

Puoi sperimentare liberamente: se vuoi tornare agli otto libri iniziali, usa il pulsante «Ripristina».

LIKE: cercare una parte di testo

Con LIKE puoi cercare un modello testuale. % significa «zero o più caratteri»; _ significa «esattamente un carattere». 'Il%' trova i titoli che iniziano con Il, mentre '%rosa%' trova un titolo che contiene rosa. In SQLite LIKE ignora normalmente maiuscole/minuscole per le lettere ASCII, non per tutte le lettere accentate.

SELECT titolo FROM libri WHERE titolo LIKE '%rosa%';

Risultato atteso: Un libro: Il nome della rosa.

IN e NOT IN

IN confronta un campo con una lista di valori: autore IN ('George Orwell', 'Isaac Asimov') equivale a un OR tra due uguaglianze. NOT IN esclude i valori elencati. I valori testuali vanno racchiusi tra apici singoli.

SELECT titolo, autore FROM libri WHERE autore IN ('George Orwell', 'Isaac Asimov');

Risultato atteso: Tre libri: i due di Orwell e Io, Robot.

BETWEEN comprende gli estremi

BETWEEN 1945 AND 1954 seleziona sia il 1945 sia il 1954. È equivalente ad anno >= 1945 AND anno <= 1954. NOT BETWEEN seleziona i valori esterni all'intervallo; nelle query con più condizioni usa le parentesi quando servono.

SELECT titolo, anno FROM libri WHERE anno BETWEEN 1945 AND 1954 ORDER BY anno;

Risultato atteso: Cinque libri: 1945, 1949, 1950, 1953 e 1954.

NULL non è né zero né testo vuoto

NULL indica un valore mancante o sconosciuto. Non si cerca con anno = NULL, ma con anno IS NULL; usa IS NOT NULL per i valori presenti. Nel database biblioteca.db tutti gli anni sono valorizzati, quindi la query qui sotto non restituisce righe.

SELECT titolo FROM libri WHERE anno IS NULL;

Risultato atteso: Nessuna riga: gli otto libri hanno tutti l'anno.

Prova NULL senza alterare biblioteca.db

Questa query crea un piccolo insieme temporaneo di due righe con WITH e VALUES: esiste soltanto durante l'interrogazione. Un libro non ha l'anno e viene trovato con IS NULL. Puoi eseguirla e poi tornare subito alla tabella libri, senza modificare il database.

WITH esempi(titolo, anno) AS (VALUES ('Libro senza anno', NULL), ('Libro noto', 2001)) SELECT titolo FROM esempi WHERE anno IS NULL;

Risultato atteso: Una riga: Libro senza anno.

Laboratorio ed esercizi

0 completati · 10 da fare

Scrivi una query per ogni consegna. Eseguila qui oppure in DB Browser; controlla colonne, righe e condizioni.

Esercizio 1

Cerca i libri il cui titolo contiene la parola rosa.

Numero di righe atteso: 1

Esercizio 2

Mostra tutti i libri con un titolo che inizia con Il.

Numero di righe atteso: 3

Esercizio 3

Mostra tutti i libri scritti da George Orwell oppure Isaac Asimov usando IN.

Numero di righe atteso: 3

Esercizio 4

Mostra i libri pubblicati dal 1945 al 1954 compresi, dal più vecchio al più nuovo.

Numero di righe atteso: 5

Esercizio 5

Trova i libri che non appartengono né a Fantasy né a Narrativa usando NOT IN.

Numero di righe atteso: 4

Esercizio 6

Trova i libri di autori il cui nome contiene Orwell, pubblicati prima del 1950.

Numero di righe atteso: 2

Esercizio 7

Mostra tutti i libri con anno esterno all'intervallo inclusivo 1950–1980.

Numero di righe atteso: 4

Esercizio 8

Cerca i libri senza anno in biblioteca.db usando IS NULL.

Numero di righe atteso: 0

Esercizio 9

Usa il piccolo insieme temporaneo della spiegazione per trovare il libro con anno NULL, senza modificare la tabella libri.

Numero di righe atteso: 1

Esercizio 10

Mostra i titoli che iniziano con Il e hanno anno dal 1940 al 1960, estremi inclusi.

Numero di righe atteso: 2

Premi «Controlla esercizio» per verificare il risultato. Se non riesci, usa «Aiutami»: riceverai suggerimenti graduali senza vedere subito la soluzione.

La tua mappa delle competenze

Cosa devi sapere per Ricerche avanzate: LIKE, IN, BETWEEN e NULL

ConceptStep distingue ciò che è indispensabile da ciò che è consigliato o utile come rinforzo. Solo i prerequisiti obbligatori bloccano l'avanzamento.

Argomento corrente Competenza solida Da ripassare Da rafforzare Da acquisire Supporto opzionale

Relazioni: linea continua = obbligatorio · linea tratteggiata = consigliato · linea puntinata = rinforzo.

PERCORSI GUIDATI

Vuoi scegliere la prossima competenza da sviluppare?