[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [volume] [parte]


Capitolo 613.   Interrogazione semplice di una relazione

Attraverso l'istruzione SELECT è possibile estrarre il contenuto di una o più relazioni simultaneamente. In questo capitolo si mostrano alcune situazioni riferite a una sola relazione.

613.1   Interrogazione completa

Si ottiene l'elenco completo di una relazione utilizzando l'istruzione seguente:

SELECT * FROM nome_relazione

Si eseguano i passaggi seguenti, per ottenere la visualizzazione del contenuto complessivo della relazione Articoli e della relazione Causali, così come dovrebbero essere contenute nella base di dati del file mag.db:

sqlite3 mag.db[Invio]

SQLite version ...
Enter ".help" for instructions

sqlite> .headers on[Invio]

sqlite> .mode column[Invio]

sqlite> SELECT * FROM Articoli;[Invio]

Articolo    Descrizione                    UM          Listino     ScortaMin 
----------  -----------------------------  ----------  ----------  ----------
1           Dischetti da 9 cm 1440 Kibyte  pz          0.2         500       
2           Dischetti da 9 cm 1440 Kibyte  pz          0.25        500       
101         CD-R 16x                       pz          0.5         500       
102         CD-R 52x                       pz          1           500       
201         CD-RW 4x                       pz          1           200       
202         CD-RW 8x                       pz          1.5         200       
301         DVD-R 8x                       pz          1           200       
302         DVD-R 16x                      pz          2           200       
401         DVD+R 8x                       pz          1           200       
402         DVD+R 16x                      pz          2           200       
501         DVD-RW 8x                      pz          2           200       
601         DVD+RW 8x                      pz          2           200       

sqlite> SELECT * FROM Causali;[Invio]

Causale     Descrizione          Variazione
----------  -------------------  ----------
1           Carico per acquisto  1         
2           Scarico per vendita  -1        
3           Reso da cliente      1         
4           Reso a fornitore     -1        
5           Rettifica aumento a  1         
6           Rettifica aumento v  -1        
7           Rettifica diminuzio  1         
8           Rettifica diminuzio  -1        
9           Carico da produzion  1         
10          Scarico a produzion  -1        
11          Carico da altro mag  1         
12          Scarico ad altro ma  -1        
13          Saldo iniziale       1         

sqlite> .quit[Invio]

Si osservi che i comandi .headers on e .mode column servono a ottenere un elenco incolonnato con le intestazioni, altrimenti, il risultato sarebbe poco gradevole esteticamente.

613.2   Interrogazione con selezione di alcuni attributi

Si ottiene l'elenco di tutte le tuple di una relazione, limitatamente a un certo gruppo di attributi, mettendo, al posto dell'asterisco, i nomi degli attributi desiderati:

SELECT attributo[, attributo]... FROM nome_relazione

Si eseguano i passaggi seguenti, per ottenere la visualizzazione del contenuto di tutte le tuple della relazione Articoli, limitatamente agli attributi Articolo, Descrizione e Listino, così come dovrebbero essere contenute nella base di dati del file mag.db:

sqlite3 mag.db[Invio]

SQLite version ...
Enter ".help" for instructions

sqlite> .headers on[Invio]

sqlite> .mode column[Invio]

sqlite> SELECT Articolo, Descrizione, Listino FROM Articoli;[Invio]

Articolo    Descrizione                    Listino   
----------  -----------------------------  ----------
1           Dischetti da 9 cm 1440 Kibyte  0.2       
2           Dischetti da 9 cm 1440 Kibyte  0.25      
101         CD-R 16x                       0.5       
102         CD-R 52x                       1         
201         CD-RW 4x                       1         
202         CD-RW 8x                       1.5       
301         DVD-R 8x                       1         
302         DVD-R 16x                      2         
401         DVD+R 8x                       1         
402         DVD+R 16x                      2         
501         DVD-RW 8x                      2         
601         DVD+RW 8x                      2         

Intuitivamente, si comprende che si può anche cambiare l'ordine di visualizzazione degli attributi:

sqlite> SELECT Descrizione, Articolo, Listino FROM Articoli;[Invio]

Descrizione                    Articolo    Listino   
-----------------------------  ----------  ----------
Dischetti da 9 cm 1440 Kibyte  1           0.2       
Dischetti da 9 cm 1440 Kibyte  2           0.25      
CD-R 16x                       101         0.5       
CD-R 52x                       102         1         
CD-RW 4x                       201         1         
CD-RW 8x                       202         1.5       
DVD-R 8x                       301         1         
DVD-R 16x                      302         2         
DVD+R 8x                       401         1         
DVD+R 16x                      402         2         
DVD-RW 8x                      501         2         
DVD+RW 8x                      601         2         

Si conclude il funzionamento interattivo di sqlite3 con il comando .quit:

sqlite> .quit[Invio]

613.3   Stampa del contenuto di una relazione

Per ottenere la stampa del contenuto di una o di più relazioni, conviene scrivere le istruzioni necessarie in un file di testo, come già fatto nel capitolo precedente. Si proceda con la creazione del file prova-stampa-articoli-e-causali.sql, con il contenuto seguente, che ricalca quanto già mostrato nelle sezioni precedenti:

-- Stampa del contenuto delle relazioni "Articoli" e "Causali"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: prova-stampa-articoli-e-causali.sql

.headers on
.mode column

SELECT * FROM Articoli;
SELECT * FROM Causali;

Per verificare il funzionamento delle istruzioni contenute nel file stampa-articoli-e-causali.sql, si può utilizzare il comando seguente, che interviene nella base di dati contenuta nel file mag.db, limitandosi a visualizzare il risultato:

sqlite3 mag.db < prova-stampa-articoli-e-causali.sql[Invio]

Si dovrebbe ottenere il listato seguente:

Articolo    Descrizione                    UM          Listino     ScortaMin 
----------  -----------------------------  ----------  ----------  ----------
1           Dischetti da 9 cm 1440 Kibyte  pz          0.2         500       
2           Dischetti da 9 cm 1440 Kibyte  pz          0.25        500       
101         CD-R 16x                       pz          0.5         500       
102         CD-R 52x                       pz          1           500       
201         CD-RW 4x                       pz          1           200       
202         CD-RW 8x                       pz          1.5         200       
301         DVD-R 8x                       pz          1           200       
302         DVD-R 16x                      pz          2           200       
401         DVD+R 8x                       pz          1           200       
402         DVD+R 16x                      pz          2           200       
501         DVD-RW 8x                      pz          2           200       
601         DVD+RW 8x                      pz          2           200       
Causale     Descrizione          Variazione
----------  -------------------  ----------
1           Carico per acquisto  1         
2           Scarico per vendita  -1        
3           Reso da cliente      1         
4           Reso a fornitore     -1        
5           Rettifica aumento a  1         
6           Rettifica aumento v  -1        
7           Rettifica diminuzio  1         
8           Rettifica diminuzio  -1        
9           Carico da produzion  1         
10          Scarico a produzion  -1        
11          Carico da altro mag  1         
12          Scarico ad altro ma  -1        
13          Saldo iniziale       1         

Per ottenere il risultato stampato su carta, basta modificare leggermente il comando:

sqlite3 mag.db < prova-stampa-articoli-e-causali.sql | lpr[Invio]

613.4   Verifica sull'interrogazione della relazione «Articoli»

Si prepari il file interrogazione-articoli-01.sql, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco di tutte le tuple della relazione Articoli, ordinando gli attributi in questo modo: Descrizione, Articolo, UM, ScortaMin e Listino.

Figura 613.9. Scheletro del file interrogazione-articoli-01.sql, da completare.

-- Interrogazione della relazione "Articoli"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: interrogazione-articoli-01.sql

.headers on
.mode column

SELECT ...

Una volta completato e salvato il file interrogazione-articoli-01.sql, se ne controlli il funzionamento con la base di dati:

sqlite3 mag.db < interrogazione-articoli-01.sql[Invio]

Si dovrebbe ottenere il risultato seguente:

Descrizione                    Articolo    UM          ScortaMin   Listino   
-----------------------------  ----------  ----------  ----------  ----------
Dischetti da 9 cm 1440 Kibyte  1           pz          500         0.2       
Dischetti da 9 cm 1440 Kibyte  2           pz          500         0.25      
CD-R 16x                       101         pz          500         0.5       
CD-R 52x                       102         pz          500         1         
CD-RW 4x                       201         pz          200         1         
CD-RW 8x                       202         pz          200         1.5       
DVD-R 8x                       301         pz          200         1         
DVD-R 16x                      302         pz          200         2         
DVD+R 8x                       401         pz          200         1         
DVD+R 16x                      402         pz          200         2         
DVD-RW 8x                      501         pz          200         2         
DVD+RW 8x                      601         pz          200         2         

Se il risultato è corretto, si proceda con la stampa:

sqlite3 mag.db < interrogazione-articoli-01.sql | lpr[Invio]

Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-articoli-01.sql.

613.5   Verifica sull'interrogazione delle relazioni «Fornitori» e «Clienti»

Si prepari il file interrogazione-fornitori-clienti-01.sql, seguendo lo scheletro seguente, tenendo conto che si vuole ottenere l'elenco di tutte le tuple delle relazioni Fornitori e Clienti, limitatamente agli attributi: Fornitore (nel caso della relazione Fornitori) o Cliente (nel caso della relazione Clienti), RagioneSociale, Telefono e Fax.

Figura 613.11. Scheletro del file interrogazione-fornitori-clienti-01.sql, da completare.

-- Interrogazione delle relazioni "Fornitori" e "Clienti"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: interrogazione-fornitori-clienti-01.sql

.headers on
.mode column

SELECT ...
SELECT ...

Una volta completato e salvato il file interrogazione-fornitori-clienti-01.sql, se ne controlli il funzionamento con la base di dati:

sqlite3 mag.db < interrogazione-fornitori-clienti-01.sql[Invio]

Si dovrebbe ottenere il risultato seguente:

Fornitore   RagioneSociale  Telefono     Fax        
----------  --------------  -----------  -----------
1           Tizio Tizi      0422,111111  0422,222222
2           Caio Cai        0423,222222  0423,333333
3           Sempronio Semp  0422,333333  0422,444444
Cliente     RagioneSociale  Telefono     Fax        
----------  --------------  -----------  -----------
1           Mevio Mevi      0422,444444  0422,555555
2           Filano Filani   0439,555555  0439,666666
3           Martino Martin  0438,666666  0438,777777

Se il risultato è corretto, si proceda con la stampa:

sqlite3 mag.db < interrogazione-fornitori-clienti-01.sql \
  \        | lpr
[Invio]

Si consegni per la valutazione, la stampa ottenuta in questo modo, assieme alla stampa del file interrogazione-fornitori-clienti.sql.

613.6   Conclusione

Il file prova-stampa-articoli-e-causali.sql, non serve più nei capitoli successivi, pertanto va eliminato.

Appunti di informatica libera 2007.02 --- Copyright © 2000-2007 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome interrogazione_semplice_di_una_relazione.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico]

Valid ISO-HTML!

CSS validator!