Make
a donation:
IBAN: IT36M0708677020000000008016 - BIC/SWIFT:
ICRAITRRU60 - VALERIO DI STEFANO or Privacy PolicyCookie PolicyTerms and Conditions a2 --- Interrogazione selettiva di una relazione
Capitolo 462. Interrogazione selettiva di una relazione
Attraverso l'istruzione SELECT, aggiungendo l'opzione WHERE, è possibile specificare una condizione per la selezione delle tuple desiderate. In mancanza dell'indicazione di questa opzione, l'elenco delle tuple è sempre completo. La parola chiave WHERE precede un'espressione logica, che viene valutata per ogni tupla: se l'espressione risulta valida (Vero), allora la tupla viene presa in considerazione.
In queste lezioni non viene descritto in modo dettagliato come realizzare delle espressioni logiche; tuttavia, vengono raccolte qui delle tabelle riassuntive per la loro realizzazione. Gli studenti possono usarle in modo intuitivo, ma nelle verifiche non si richiede altro che utilizzare o modificare leggermente degli esempi già mostrati.
Vero se entrambi gli operandi restituiscono il valore Vero.
op1 OR op2
Vero se almeno uno degli operandi restituisce il valore Vero.
Tabella 462.3. Espressioni sulle stringhe di caratteri.
Espressioni e modelli
Descrizione
stringa LIKE modello
Restituisce Vero se il modello corrisponde alla stringa.
stringa NOT LIKE modello
Restituisce Vero se il modello non corrisponde alla stringa.
_
Rappresenta un carattere qualsiasi.
%
Rappresenta una sequenza indeterminata di caratteri.
Tabella 462.4. Espressioni di verifica dei valori indeterminati.
Operatori
Descrizione
espressione IS NULL
Restituisce Vero se l'espressione genera un risultato indeterminato.
espressione IS NOT NULL
Restituisce Vero se l'espressione non genera un risultato indeterminato.
Tabella 462.5. Espressioni per la verifica dell'appartenenza di un valore a un intervallo o a un elenco.
Operatori e operandi
Descrizione
op1 IN (elenco)
Vero se il primo operando è contenuto nell'elenco.
op1 NOT IN (elenco)
Vero se il primo operando non è contenuto nell'elenco.
op1 BETWEEN op2 AND op3
Vero se il primo operando è compreso tra il secondo e il terzo.
op1 NOT BETWEEN op2 AND op3
Vero se il primo operando non è compreso nell'intervallo.
462.1
Interrogazione selettiva
A titolo di esempio, si vuole ottenere l'elenco delle tuple della relazione Articoli, selezionando solo quelle che riportano un prezzo di listino maggiore o uguale a 1,00 €. Si può utilizzare il programma sqlite3 in modo interattivo:
$ sqlite3 mag.db[Invio]
SQLite version ...
Enter ".help" for instructions
sqlite> .headers on[Invio]
sqlite> .mode column[Invio]
sqlite> SELECT * FROM Articoli WHERE Listino >= 1;[Invio]
La condizione di selezione potrebbe essere più articolata; per esempio si potrebbe decidere di selezionare gli articoli che hanno un prezzo di listino maggiore o uguale a 1,00 € e che hanno una descrizione che inizia con «DVD»:
sqlite> SELECT * FROM Articoli[Invio]
...> WHERE Listino >= 1 AND Descrizione LIKE 'DVD%';[Invio]
Come sempre, si conclude il funzionamento interattivo di sqlite3 con il comando .quit:
sqlite> .quit[Invio]
462.2
Verifica sull'interrogazione selettiva della relazione «Articoli»
Si prepari il file interrogazione-articoli-03.sql, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco delle tuple della relazione Articoli, corrispondenti a dei «DVD», che abbiano un prezzo minore o uguale a 1,00 € (l'operatore da usare per rappresentare il confronto «minore o uguale» è <=).
Figura 462.9. Scheletro del file interrogazione-articoli-03.sql, da completare.
-- Interrogazione della relazione "Articoli"
-- Esercizio di: cognomenomeclasse
-- Data: data
-- File: interrogazione-articoli-03.sql
.headers on
.mode column
SELECT ...
FROM ...
WHERE ...
Una volta completato e salvato il file interrogazione-articoli-03.sql, se ne controlli il funzionamento con la base di dati:
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-articoli-03.sql.
462.3
Verifica sull'interrogazione selettiva e ordinata della relazione «Articoli»
Si prepari il file interrogazione-articoli-04.sql, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco ordinato per livello di scorta minima delle tuple della relazione Articoli, che corrispondono a dei «CD».
Figura 462.11. Scheletro del file interrogazione-articoli-04.sql, da completare.
-- Interrogazione della relazione "Articoli"
-- Esercizio di: cognomenomeclasse
-- Data: data
-- File: interrogazione-articoli-04.sql
.headers on
.mode column
SELECT ...
FROM ...
WHERE ...
ORDER BY ...
Una volta completato e salvato il file interrogazione-articoli-04.sql, se ne controlli il funzionamento con la base di dati:
Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-articoli-04.sql.
462.4
Verifica sull'interrogazione selettiva della relazione «Causali»
Si prepari il file interrogazione-causali-02.sql, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco delle tuple della relazione Causali che comportano un aumento (contabile) della quantità di un articolo in magazzino. Le causali che rappresentano un aumento della quantità sono quelle che, nell'attributo Variazione hanno il valore 1 (ovvero +1); pertanto, per selezionare le tuple in questione, è sufficiente verificare che questo valore sia esattamente pari a uno (utilizzando l'operatore =).
Figura 462.13. Scheletro del file interrogazione-causali-02.sql, da completare.
-- Interrogazione della relazione "Causali"
-- Esercizio di: cognomenomeclasse
-- Data: data
-- File: interrogazione-causali-02.sql
.headers on
.mode column
SELECT ...
FROM ...
WHERE ...
Una volta completato e salvato il file interrogazione-causali-02.sql, se ne controlli il funzionamento con la base di dati: