Strutture dati e database: differenze tra le versioni

 
----
AGGIORNAMENTO DATI
 
In una tabella di database non è possibile modificare un solo campo, ma è necessario intervenire su tutto il record con un'operazione che si svolge in tre fasi:
 
FASE1: lettura del record che contiene il campo (o i campi) che vogliamo modificare<br />
FASE2: assegnazione dei nuovi valori ai campi<br />
FASE3: registrazione della nuova versione del record con i valori aggiornati<br />
 
L'istruzione mysql per aggiornare i dati di un record è UPDATE; l'aggiornamento con UPDATE può essere eseguito contemporaneamente su un gruppo di record, fino a poter aggiornare tutti i record della tabella con una sola istruzione.
 
'''Update di record'''
 
''UPDATE nome_tabella
''SET nome_campo1=espressione1,
''nome_campo2=espressione2, ...
''[WHERE definizione_where] ;''
 
Esempio:<br />
''UPDATE tabella_film
''SET prezzo="24.00"
''WHERE supporto="DVD"
'';''
 
In questo modo la variante di prezzo verrà applicata a tutti i record corrispondenti al criterio "supporto=DVD"
 
Altra variante:<br />
''UPDATE tabella_film
''SET prezzo="24.00"
''WHERE supporto="DVD" AND titolo="American Beauty"
'';
 
L'operatore logico AND stabilisce che entrambe le condizioni debbano essere soddisfatte.
 
Oltre agli operatori logici, le query possono contenere operatori aritmetici e operatori di confronto. Ai primi appartengono i simboli necessari all'esecuzione di operazioni aritmetiche; gli operatori di confronto consentono di eseguire paragoni tra contenuti dei campi, ad esempio per riconoscere quale sia il maggiore.
 
Esempio:<br />
''UPDATE tabella_film
''SET prezzo=prezzo*1.2
''WHERE prezzo<20.00
'';''
 
Vale a dire che il prezzo dei film inferiori a 20.00 viene aumentato del 20% (1,2).
 
'''REPLACE'''
 
Il comando REPLACE combina le funzioni di INSERT e UPDATE utilizzando la stessa sintassi:<br />
''REPLACE [INTO] nome_tabella SET nome_campo1=espressione1, nome_campo2=espressione2, ... ;''
 
''REPLACE [INTO] nome_tabella [(nome_campo1, ...)] VALUES (espressione1, ...) ;''
 
''REPLACE [INTO] nome_tabella [(nome_campo1, ...)] SELECT * FROM nome_tabella ;''
 
E' evidentemente un comando di grande utilità ma alquanto rischioso nell'utilizzo poichè aggiorna anche dati la cui chiave esiste già, con la possibilità di danneggiare irreparabilmente il lavoro svolto in precedenza.
 
----
CANCELLAZIONE DATI
 
Nella parte relativa alla gestione dati abbiamo preso in considerazione il comando DROP per la cancellazione delle tabelle, esso però compie un'eliminazione completa della tabella in tutta la sua struttura.
Col termine "cancellazione dati" possiamo però intendere l'eliminazione o svuotamento di alcuni campi o di un intero record.
Quando si svuota un campo di un record e si lascia il record nella tabella, quel campo potrà essere riutilizzato tramite comando UPDATE.
Nel caso venga tolta un'intera riga della tabella non sarà più possibile utilizzare quel record, il comando utilizzato è DELETE.
 
'''Cancellare il contenuto di campi'''
Per svuotare semplicemente un campo, possiamo utilizzare il comando UPDATE e assegnare il valore NULL al campo in oggetto:<br />
''UPDATE tabella_film SET titolo=" " WHERE titolo="Viaggio in America" ;''
 
Attenzione! Se non specifichiamo la condizione WHERE, verranno svuotato tutti i campi "titolo" di tutti i record!
 
La cancellazione può essere un azzeramento di valore:<br />
''UPDATE tabella_film SET prezzo=0 WHERE titolo="Viaggio in America" ;''
 
Il numero 0 in un campo numerico rappresenta comunque un valore, se si vuole gestire il campo in modo che non contenga alcun dato:<br />
''UPDATE tabella_film SET prezzo=NULL WHERE titolo="Viaggio in America" ;''
 
Alcune precauzioni:<br />
Il valore 0 in un campo di tipo DATE verrebbe interpretato come "anno 2000", è necessario quindi utilizzare l'attributo NULL.<br />
Il valore NULL in un campo di tipo TIMESTAMP verrebbe interpretato come "data e ora corrente", quindi:<br />
-------------------------------------------------------
Tipo di dato Stringa di azzeramento
DATE 0000-00-00
TIME 00:00:00
YEAR 0000
TIMESTAMP 00000000000000
DATETIME 0000-00-00 00:00:00
-------------------------------------------------------
 
'''DELETE record'''
 
La cancellazione di uno o più record si effettua tramite comando DELETE:<br />
''DELETE FROM nome_tabella [WHERE definizione_where] ;''
 
Esempio:<br />
''DELETE FROM tabella_film WHERE film_id="1" ;''
 
Tralasciare la clausola WHERE comporta l'eliminazione di tutti i record della tabella.<br />
Con il comando DROP la tabella viene completamente eliminata, mentre con DELETE eliminiamo solo il contenuto conservando la struttura della tabella stessa.
 
==== Query ====
23

contributi