Esercizio 1
Cerca i libri il cui titolo contiene la parola rosa.
Numero di righe atteso: 1
SQL e database · Lezione
Cerca frammenti di testo, seleziona più valori, lavora con intervalli e impara a distinguere NULL da zero e stringa vuota.
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».
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 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 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 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.
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.
Scrivi una query per ogni consegna. Eseguila qui oppure in DB Browser; controlla colonne, righe e condizioni.
Cerca i libri il cui titolo contiene la parola rosa.
Numero di righe atteso: 1
Mostra tutti i libri con un titolo che inizia con Il.
Numero di righe atteso: 3
Mostra tutti i libri scritti da George Orwell oppure Isaac Asimov usando IN.
Numero di righe atteso: 3
Mostra i libri pubblicati dal 1945 al 1954 compresi, dal più vecchio al più nuovo.
Numero di righe atteso: 5
Trova i libri che non appartengono né a Fantasy né a Narrativa usando NOT IN.
Numero di righe atteso: 4
Trova i libri di autori il cui nome contiene Orwell, pubblicati prima del 1950.
Numero di righe atteso: 2
Mostra tutti i libri con anno esterno all'intervallo inclusivo 1950–1980.
Numero di righe atteso: 4
Cerca i libri senza anno in biblioteca.db usando IS NULL.
Numero di righe atteso: 0
Usa il piccolo insieme temporaneo della spiegazione per trovare il libro con anno NULL, senza modificare la tabella libri.
Numero di righe atteso: 1
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.
ConceptStep distingue ciò che è indispensabile da ciò che è consigliato o utile come rinforzo. Solo i prerequisiti obbligatori bloccano l'avanzamento.
Relazioni: linea continua = obbligatorio · linea tratteggiata = consigliato · linea puntinata = rinforzo.