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


Capitolo 619.   Modifica del contenuto delle tuple

Una volta inserita una tupla in una relazione, si può modificare il suo contenuto con l'istruzione UPDATE, che si applica a tutte le tuple che soddisfano una certa condizione.

619.1   Modifica di una causale di magazzino

Con l'ausilio di un programma per la scrittura e modifica di file di testo puro, si crei il file prova-modifica-causali.sql, contenente il testo seguente, sostituendo le metavariabili con informazioni appropriate e rispettando la punteggiatura:

-- Modifica della relazione "Causali"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: prova-modifica-causali.sql

UPDATE Causali
       SET Descrizione = 'car x acq'
       WHERE Causale = 1;

In questo modo, si vuole modificare la tupla della relazione Causali, con il codice causale uno, in modo che la descrizione risulti molto più breve.

Si controlli di avere scritto il file prova-modifica-causali.sql in modo corretto, rispettando anche la punteggiatura; si controlli di avere salvato il file con il nome previsto, quindi si proceda con il comando seguente:

sqlite3 mag.db < prova-modifica-causali.sql[Invio]

Se non si ottiene alcun messaggio da parte del programma, la modifica della tupla dovrebbe essere avvenuta con successo, altrimenti, è stato commesso un errore. Per rimediare all'errore, dovrebbe essere sufficiente modificare il file prova-modifica-causali.sql e riprovare.

Quando si è consapevoli di avere modificato correttamente la tupla in questione, si può interrogare la relazione per verificare i cambiamenti apportati. Si esegua il procedimento seguente, in modo interattivo:

sqlite3 mag.db[Invio]

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

sqlite> .headers on[Invio]

sqlite> .mode column[Invio]

sqlite> SELECT * FROM Causali;[Invio]

Si dovrebbe ottenere il listato seguente:

Causale     Descrizione  Variazione
----------  -----------  ----------
1           car x acq    1         
2           Scarico per  -1        
3           Reso da cli  1         
4           Reso a forn  -1        
5           Rettifica a  1         
6           Rettifica a  -1        
7           Rettifica d  1         
8           Rettifica d  -1        
9           Carico da p  1         
10          Scarico a p  -1        
11          Carico da a  1         
12          Scarico ad   -1        
13          Saldo inizi  1         

Come sempre, si conclude il funzionamento interattivo di sqlite3 con il comando .quit:

sqlite> .quit[Invio]

Prima di passare alla sezione successiva, si deve ripristinare la base di dati al suo stato precedente. Per questo, è necessario cancellare il file mag.db e poi ricrearlo con il comando seguente:

sqlite3 mag.db < magazzino.sql[Invio]

619.2   Modifica di diverse causali di magazzino

Si riprenda il file prova-modifica-causali.sql e lo si modifichi secondo la forma seguente, sostituendo le metavariabili con informazioni appropriate e rispettando la punteggiatura:

-- Modifica della relazione "Causali"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: prova-modifica-causali.sql

UPDATE Causali
       SET Descrizione = UPPER (Descrizione)
       WHERE Variazione = 1;

UPDATE Causali
       SET Descrizione = LOWER (Descrizione)
       WHERE Variazione = -1;

In questo modo, si vuole modificare ogni tupla della relazione Causali che corrisponde a un aumento di quantità in magazzino (in quanto nell'attributo Variazione ha il valore +1), in modo da avere una descrizione con tutte lettere maiuscole. Nel contempo, si vuole che le descrizione associate a movimenti in diminuzione, siano scritte utilizzando soltanto caratteri minuscoli.

Si controlli di avere scritto il file prova-modifica-causali.sql in modo corretto, rispettando anche la punteggiatura; si controlli di avere salvato il file con il nome previsto, quindi si proceda con il comando seguente:

sqlite3 mag.db < prova-modifica-causali.sql[Invio]

Se non si ottiene alcun messaggio da parte del programma, la modifica delle tuple dovrebbe essere stata eseguita con successo, altrimenti, è stato commesso un errore. Per rimediare all'errore, dovrebbe essere sufficiente modificare il file prova-modifica-causali.sql e riprovare.

Quando si è consapevoli di avere modificato correttamente le tuple, si può interrogare la relazione per verificare i cambiamenti apportati. Si esegua il procedimento seguente, in modo interattivo:

sqlite3 mag.db[Invio]

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

sqlite> .headers on[Invio]

sqlite> .mode column[Invio]

sqlite> SELECT * FROM Causali;[Invio]

Si dovrebbe ottenere il listato seguente:

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         

Come sempre, si conclude il funzionamento interattivo di sqlite3 con il comando .quit:

sqlite> .quit[Invio]

Prima di passare alla sezione successiva, si deve ripristinare la base di dati al suo stato precedente. Per questo, è necessario cancellare il file mag.db e poi ricrearlo con il comando seguente:

sqlite3 mag.db < magazzino.sql[Invio]

619.3   Verifica sulla modifica della relazione «Articoli»

Si prepari il file modifica-articoli.sql, seguendo lo scheletro seguente, tenendo conto che si vuole cambiare la descrizione del primo e del secondo articolo, in modo da avere rispettivamente: «Floppy 1.4» e «Floppy 1.4 C». Per ottenere questo risultato è necessario utilizzare due volte l'istruzione UPDATE.

Figura 619.7. Scheletro del file modifica-articoli.sql, da completare.

-- Modifica della relazione "Articoli"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: modifica-articoli.sql

UPDATE Articoli
       SET ...
       WHERE Articolo = 1;

UPDATE Articoli
       SET ...
       WHERE Articolo = 2;

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

sqlite3 mag.db < modifica-articoli.sql[Invio]

Se non si ottiene alcun messaggio da parte del programma, la modifica delle tuple dovrebbe essere avvenuta con successo, altrimenti è stato commesso un errore. Per rimediare all'errore dovrebbe essere sufficiente correggere il file modifica-articoli.sql e riprovare. Quando si ritiene di avere eseguito l'operazione correttamente, si può interrogare la relazione Articoli per verificarne il risultato. Si esegua il procedimento seguente, 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;[Invio]

Si dovrebbe ottenere il listato seguente:

Articolo    Descrizione  UM          Listino     ScortaMin 
----------  -----------  ----------  ----------  ----------
1           Floppy 1.4   pz          0.2         500       
2           Floppy 1.4   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       

Se tutto funziona regolarmente, si consegni per la valutazione la stampa del file modifica-articoli.sql.

Prima di passare alla sezione successiva, si deve ripristinare la base di dati al suo stato precedente. Per questo, è necessario cancellare il file mag.db e poi ricrearlo con il comando seguente:

sqlite3 mag.db < magazzino.sql[Invio]

619.4   Verifica sulla modifica delle relazioni «Clienti» e «Fornitori»

Si prepari il file modifica-clienti-fornitori.sql, seguendo lo scheletro seguente, tenendo conto che si vuole cambiare la ragione sociale delle relazioni Clienti e Fornitori, in modo che sia costituita da caratteri maiuscoli. Pertanto, la sostituzione riguarda tutte le tuple in entrambe le relazioni.

Figura 619.10. Scheletro del file modifica-clienti-fornitori.sql, da completare.

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

UPDATE Clienti
       SET ...

UPDATE Fornitori
       SET ...

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

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

Se non si ottiene alcun messaggio da parte del programma, la modifica delle tuple dovrebbe essere avvenuta con successo, altrimenti è stato commesso un errore. Per rimediare all'errore dovrebbe essere sufficiente correggere il file modifica-articoli.sql e riprovare. Quando si ritiene di avere eseguito l'operazione correttamente, si possono interrogare le due relazioni per verificarne il contenuto. Si esegua il procedimento seguente, in modo interattivo:

sqlite3 mag.db[Invio]

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

sqlite> .headers on[Invio]

sqlite> .mode column[Invio]

sqlite> SELECT * FROM Clienti;[Invio]

Si dovrebbe ottenere il listato seguente:

Cliente RagioneSociale Paese  Indirizzo    CAP   Citta     Prov Telefono    Fax         CFPI       
------- -------------- ------ ------------ ----- --------- ---- ----------- ----------- -----------
1       MEVIO VEVI     ITALIA via Mare, 11 31050 Morgano   TV   0422,444444 0422,555555 45678901234
2       FILANO FILANI  ITALIA via Farfalle 31032 Feltre    BL   0439,555555 0439,666666 56789012345
3       MARTINO MARTIN ITALIA via Marte, 3 31010 Mareno di TV   0438,666666 0438,777777 67890123456

sqlite> SELECT * FROM Fornitori;[Invio]

Si dovrebbe ottenere il listato seguente:

Fornitore RagioneSociale Paese  Indirizzo     CAP   Citta      Prov Telefono    Fax         CFPI       
--------- -------------- ------ ------------- ----- ---------- ---- ----------- ----------- -----------
1         TIZIO TIZI     ITALIA via Tazio, 11 31100 Treviso    TV   0422,111111 0422,222222 12345678901
2         CAIO CAI       ITALIA via Caino, 22 31033 Castelfran TV   0423,222222 0423,333333 23456789012
3         SEMPRONIO SEMP ITALIA via Salina, 3 31057 Silea      TV   0422,333333 0422,444444 34567890123

Se tutto funziona regolarmente, si consegni per la valutazione la stampa del file modifica-clienti-fornitori.sql.

Prima di passare alla sezione successiva, si deve ripristinare la base di dati al suo stato precedente. Per questo, è necessario cancellare il file mag.db e poi ricrearlo con il comando seguente:

sqlite3 mag.db < magazzino.sql[Invio]

619.5   Conclusione

Il file prova-modifica-causali.sql non serve più e va cancellato.

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 modifica_del_contenuto_delle_tuple.htm

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

Valid ISO-HTML!

CSS validator!