aggiornare database con insert update e delete

Insert, update e delete per aggiornare in sicurezza un database

In questa guida vedremo come scrivere in SQL in modo corretto e sicuro query di insert, update e delete per aggiornare un database Sql Server. Molto spesso queste operazioni risultano particolarmente delicate in quanto, a differenza di una semplice select, un errore nella loro scrittura potrebbe creare gravi problemi al database sottostante. Diventa dunque necessario avere una guida per procedere in modo sicuro e controllato. L’idea di base è quella di seguire sempre questo paradigma:

  • scrivere inizialmente una query che interroga il database (tramite una select);
  • modificarla con pochi e semplici passi in una query che lo aggiorna (tramite una delete, insert, update).

 

Cancellare righe da una tabella con delete

Se vogliamo cancellare delle righe da una tabella, dobbiamo preliminarmente scrivere la query di interrogazione (tramite una select) che le visualizzi. Questa passo è imprescindibile: scrivendo direttamente la delete non avremmo modo di controllare quello che andiamo a cancellare definitivamente dal database. Se ad esempio vogliamo cancellare i clienti del Piemonte, possiamo procedere così:

1. scriviamo la query d’interrogazione

SELECT  *

FROM    Clienti

WHERE Regione=’Piemonte’;

2. controlliamo il risultato;

3. sostituiamo la riga contenente “SELECT *” con una riga contenente l’istruzione “DELETE”. La query di cancellazione sarà dunque

DELETE

FROM     Clienti

WHERE Regione=’Piemonte’;

 

Inserire righe in una tabella

Anche in questo caso, dobbiamo preliminarmente scrivere la query di interrogazione (tramite una select) che  visualizzi le righe che vogliamo inserire. Scrivendo direttamente la insert, infatti, non avremmo modo di controllare quello che andiamo a scrivere definitivamente nel database.

Se ad esempio vogliamo inserire nella tabella Clienti una riga con questi dati:

NumeroCliente Nome Cognome DataNascita RegioneResidenza
11 Nicola Iantomasi 17/10/1980 Piemonte

procediamo in questo modo:

1.scriviamo la query con la SELECT

SELECT 11 as  NumeroCliente,

               ‘Nicola’ as Nome,

               ‘Iantomasi’ as Cognome,

               ‘1980-10-17’ as DataNascita,

               ‘Piemonte’ as RegioneResidenza;

2. controlliamo il risultato;

3. aggiungiamo in alto una riga contenente INSERT INTO più il nome della tabella, più l’elenco delle colonne tra parentesi:

INSERT INTO Clienti (NumeroCliente, Nome, Cognome, DataNascita, RegioneResidenza)

SELECT   11 as  NumeroCliente,

        ‘Nicola’ as Nome,

        ‘Iantomasi’ as Cognome,

        ‘1980-10-17’ as DataNascita,

        ‘Piemonte’ as RegioneResidenza;

Ecco alcuni ulteriori suggerimenti:

 

Modificare i dati in una tabella con update

A costo di essere ripetitivi, ripetiamo il solito paradigma: preliminarmente scriviamo una query di interrogazione (tramite una select) che visualizzi i vecchi e i nuovi valori, altrimenti non avremmo modo di controllare quello che andiamo a sovrascrivere definitivamente nel database.

Ecco un esempio: modifichiamo nella tabella dei clienti la regione di residenza del cliente numero 1.

NumeroCliente Nome Cognome DataNascita RegioneResidenza
1 Nicola Iantomasi 17/10/1980 Piemonte

 

1. Scriviamo la query d’interrogazione

SELECT *,

               RegioneResidenza,

               ‘Lombardia’ as RegioneResidenzaNew

FROM  Clienti

WHERE NumeroCliente=1;

2. controlliamo il risultato, facendo attenzione anche al numero di righe restituite;

3. modifichiamo la query precedente in questo modo:

3.1) spostiamo in alto la FROM

FROM  Clienti

SELECT *,

               RegioneResidenza,

               ‘Lombardia’ as RegioneResidenzaNew

WHERE NumeroCliente=1

3.2) trasformiamo la FROM in UPDATE

UPDATE  Clienti

SELECT *,

               RegioneResidenza,

               ‘Lombardia’ as RegioneResidenzaNew

WHERE NumeroCliente=1

3.3) trasformiamo la SELECT in SET

UPDATE  Clienti

SET       *,

               RegioneResidenza,

               ‘Lombardia’ as RegioneResidenzaNew

WHERE NumeroCliente=1

3.4) riportiamo dopo SET la colonna che si vuole modificare e il nuovo valore

UPDATE  Clienti

SET        RegioneResidenza = ‘Lombardia’

WHERE NumeroCliente=1;

Anche in questo caso aggiungiamo qualche suggerimento:

    • se vogliamo aggiornare più colonne, basta separarle da una virgola:
      UPDATE  Clienti
      SET  RegioneResidenza = ‘Lombardia’ ,
      Nome = ‘Nicola’
      WHERE NumeroCliente=1;
  • a destra dell’uguale possiamo utilizzare un’altra colonna della tabella o una funzione;
  • fare sempre massima attenzione a selezionare anche la clausola WHERE;
  • nel caso occorra modificare un valore con un dato proveniente da un’altra tabella, occorrerà scrivere un update con join:

UPDATE  C

SET           C.Nome = A.Nome

FROM      Clienti as C

INNER JOIN Archivio as A

    ON C.IdCliente = A.IdCliente

WHERE  C.IdCliente = 1;

In questo articolo trovi un approfondimento su questa tipologia di Update per tutti i principali RDBMS.

 

Insert, Update e Delete: e adesso?

Se vuoi approfondire altri temi sul linguaggio SQL, ecco il link all’elenco di tutti gli articoli del blog sul tema database. Con il corso di introduzione a SQL e ai database relazionali ti insegnerò a scrivere query in modo corretto ed efficiente.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Torna su