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


Capitolo 620.   Eliminazione delle tuple

La cancellazione delle tuple avviene attraverso l'istruzione DELETE FROM, con un procedimento simile a quello della modifica, in quanto va specificata la condizione di cancellazione, altrimenti si ottiene l'eliminazione di tutte le tuple della relazione.

620.1   Cancellazione 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-cancella-causali.sql, contenente il testo seguente, sostituendo le metavariabili con informazioni appropriate e rispettando la punteggiatura:

-- Cancellazione nella relazione "Causali"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: prova-cancella-causali.sql

DELETE FROM Causali
       WHERE Causale = 1;

In questo modo, si vuole eliminare la tupla della relazione Causali, con il codice causale uno (quella che ha la descrizione «Carico per acquisto»).

Si controlli di avere scritto il file prova-cancella-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-cancella-causali.sql[Invio]

Se non si ottiene alcun messaggio da parte del programma, la cancellazione della tupla dovrebbe essere avvenuta con successo, altrimenti, è stato commesso un errore. Per rimediare all'errore, dovrebbe essere sufficiente modificare il file prova-cancella-causali.sql e riprovare. Quando si ritiene di avere cancellato la tupla in questione, si può interrogare la relazione per verificarne lo stato. 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
----------  -------------------  ----------
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]

620.2   Cancellazione di diverse causali di magazzino

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

-- Cancellazione nella relazione "Causali"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: prova-cancella-causali.sql

DELETE FROM Causali
       WHERE Variazione = -1;

In questo modo, si vogliono eliminare le tuple corrispondenti a una riduzione della quantità in magazzino, (in quanto nell'attributo Variazione ha il valore -1).

Si controlli di avere scritto il file prova-cancella-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-cancella-causali.sql[Invio]

Se non si ottiene alcun messaggio da parte del programma, la cancellazione dovrebbe avere avuto successo, altrimenti, è stato commesso un errore. Per rimediare all'errore, dovrebbe essere sufficiente modificare il file prova-cancella-causali.sql e riprovare. Quando si ritiene di avere eseguito l'operazione con successo, 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         
3           Reso da cliente      1         
5           Rettifica aumento a  1         
7           Rettifica diminuzio  1         
9           Carico da produzion  1         
11          Carico da altro mag  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]

620.3   Verifica sulla cancellazione di alcuni articoli

Si prepari il file cancella-articoli.sql, seguendo lo scheletro seguente, tenendo conto che si vogliono eliminare i dischetti (i primi due).

Figura 620.7. Scheletro del file cancella-articoli.sql, da completare.

-- Cancellazione di alcune tuple della relazione "Articoli"
-- Esercizio di: cognome nome classe
-- Data: data
-- File: cancella-articoli.sql

DELETE FROM Articoli
       WHERE ...

DELETE FROM Articoli
       WHERE ...

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

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

Se non si ottiene alcun messaggio da parte del programma, la cancellazione 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 
----------  -----------  ----------  ----------  ----------
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 cancella-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]

620.4   Conclusione

Il file prova-cancella-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 eliminazione_delle_tuple.htm

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

Valid ISO-HTML!

CSS validator!