Modifica Record
Fino a questo punto abbiamo visto soltanto la parte dilinguaggio SQL adatto all'interrogazione.
Lavorando su database spesso ci si ritrova nellanecesitta' di apportare modifiche ai contenuti deirecords.
SQL dispone del verbo UPDATE che ci permette di svolgerequesto tipo di azioni.
La sintassi generalizzata e':
UPDATE TAVOLA SET .... ;
Un comando del tipo
UPDATE TAVOLA1 SET NOME = 'Rossi';
setterebbe tutti i record della TAVOLA1 inserendo nellacolonna NOME il nome 'Rossi'.
Update puo' essere in questo caso veramente pericolosodato che ha la possibilita' di cambiare tutti i record diuna tavola.
La clausola WHERE puo' restringere il campo dei deirecord su cui agire.
Ad esempio
UPDATE TAVOLA1 SET NOME = 'Rossi' WHERE NOME = 'Bianchi';
rintraccierebbe le righe della tavola in cui il campo NOMEcontiene 'Bianchi' e sostituirebbe questo con'Rossi'.
Supponiamo diavere un database della SIP in cui vengono memorizzati i datirelativi alla rete telefonica.
Una tavola potrebbe essere:
TAVOLA NUMERI
NUMERO ZONA ARMADIO
-----------------------------
223456 131 A-123
223457 131 A-123
223459 131 A-123
223462 131 A-123
985685 131 A-123
985686 131 A-123
Supponiamo a questo punto che i numeri inizianti per 22..debbano essere aggiornati seconda la nuova numerazione.
In pratica dovrebbero avere un incremento di 762231 per farein modo che il numero 223456 diventi 985687 e cosi via.
Il comando per l'update potrebbe essere:
UPDATE NUMERISET NUMERO = NUMERO + 762231WHERE NUMERO > 223455 AND NUMERO < 223463;
Mediante UPDATE non e' possibile cambiare records dapiu' di una tavola per volta.
Includo tra i verbi adatti a modificare un record anchequelli legati all'inserimento e alla cancellazione.
Il verbo SQL che permette di creare un nuovo record e'INSERT la cui sintassi generalizzata e':
INSERT INTO TAVOLA .... ;
I valori da inserire devono essere specificati tra parentesidopo la parola VALUE.
Guardate il seguente esempio:
INSERT INTO TAVOLA VALUE(1,'Rossi','V.Roma','Asti',100000);
Utilizzando il metodo appena descritto dovremo assegnaretutti i campi del record che intendiamo inserire.
Nel caso in cui volessimo solo assegnare alcuni campidovremmo specificare questi prima di utilizzare la parolaVALUE.
Prendiamo l'esempio precedente e consideriamolo unassegnazione di tutti i campi.
Questi potrebbero essere:
NUMERO, NOME, INDIRIZZO, CITTA, IMPORTO
Se volessimo solo assegnare il campo nome e quello relativoall'importo potremmo fare:
INSERT INTO TAVOLA (NOME, IMPORTO) VALUES ('Rossi',100000);
Il valore NULL puo' essere utilizzato come valore.
In ogni caso l'assegnazione puo' anche non esserediretta ma frutto di un interrogazione eseguita medianteSELECT a patto che questa non sia eseguita sulla stessatavola in cui si vuole inserire il valore.
C'e' da notare che usando la specifica VALUE si creaun solo record mentre utilizzando SELECT viene creato unrecord per ogni valore restituito.
Vediamo alcuni esempi in pratica:
INSERT INTO TAVOLA1 (NOME, IMPORTO) SELECT NOME, IMPORTO FROM TAVOLA2;
oppure anche con WHERE:
INSERT INTO TAVOLA1 (NOME, IMPORTO)SELECT NOME, IMPORTO FROM TAVOLA2 WHERE CITTA = 'Roma';
La cancellazione di un record avviene mediante DELETE.
DELETE FROM TAVOLA ...;
cancella tutti i record della tavola.
Nel caso in cui si vogliono selezionare i records dacancellare bisogna utilizzare la parola WHERE.
DELETE FROM TAVOLA WHERE NOME = 'Rossi' AND CITTA = 'Roma';