Mysql
 sql >> Database >  >> RDS >> Mysql

Aggiorna i dati in un database MySQL

Questa pagina spiega come aggiornare i dati esistenti in un database MySQL.

Quindi abbiamo già aggiunto i dati al nostro database. Ma ora ci rendiamo conto che i nostri dati contengono un errore. Alle mele è stato assegnato un UnitId di 1 — ma dovrebbe essere 2 .

Puoi vederlo qui:

Nessun problema. Aggiorneremo solo quel record.

Il UPDATE Dichiarazione

Il codice SQL UPDATE dichiarazione ci consente di aggiornare i dati nel nostro database. Possiamo utilizzare questa istruzione per modificare l'ID unità da 1 a 2 . Per fare ciò, utilizziamo il WHERE clausola per specificare il record esatto che dobbiamo aggiornare. In questo modo:

UPDATE Fruit
SET UnitId = 2
WHERE FruitId = 1;

In genere, è consigliabile quando si esegue un UPDATE operazione, per specificare il campo ID del record che stai tentando di aggiornare (o qualunque sia la sua chiave primaria). Questo aiuta a prevenire l'aggiornamento accidentale dei record errati. In questo esempio sapevamo che le mele avevano un FruitId di 1 . Ma potresti non conoscere sempre l'ID del record che stai tentando di aggiornare. In tal caso potresti fare qualcosa del genere:

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple' AND UnitId = 1;

Possiamo seguire entrambi con un SELECT dichiarazione ed ecco il risultato:

Nota che DateUpdated anche la colonna è stata aggiornata, anche se non è stato specificato un aggiornamento per quella colonna. Questo perché, quando abbiamo creato la tabella, abbiamo impostato quella colonna in modo che venga aggiornata con la data/ora corrente ogni volta che c'è stato un aggiornamento del record.

Ecco il codice che abbiamo usato quando abbiamo creato quella colonna:

DateUpdated TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Più in particolare, è il ON UPDATE CURRENT_TIMESTAMP ciò ha comportato l'aggiornamento della colonna proprio ora quando abbiamo eseguito UPDATE dichiarazione.

Aggiornamenti sicuri

Avremmo potuto altrettanto facilmente costruire il nostro UPDATE comando in questo modo (senza AND UnitId = 1 ):

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

Tuttavia, potresti riscontrare il seguente errore se provi a farlo:

Modalità aggiornamenti sicuri

Se riscontri l'errore precedente, è perché la tua connessione MySQL è in esecuzione in modalità Aggiornamenti sicuri. Questo aiuta a impedirci di sovrascrivere accidentalmente grandi quantità di dati. Infatti, se avessimo dimenticato di inserire il WHERE clausola avremmo aggiornato ogni singolo record nella tabella!

Sì, l'esecuzione del codice seguente comporterà l'aggiornamento di tutti i record nella nostra tabella a Banana :

UPDATE Fruit
SET FruitName = 'Banana'

Quindi c'è un vero vantaggio nell'esecuzione in modalità Aggiornamenti sicuri.

Tuttavia, se hai davvero bisogno di eseguire quella query (o se tutti i tuoi frutti si sono davvero trasformati in banane), puoi eseguire una delle seguenti operazioni:

  • Modifica la tua query per includere una KEY colonna. L'abbiamo fatto negli esempi nella parte superiore di questa pagina.
  • Disabilita la modalità Aggiornamenti sicuri.

Disabilita la modalità Aggiornamenti sicuri

Se trovi che devi eseguire un UPDATE operazione senza utilizzare un KEY campo, puoi sempre disattivare la modalità Aggiornamenti sicuri.

Per disabilitare la modalità Aggiornamenti sicuri, esegui il comando seguente prima di eseguire il tuo UPDATE dichiarazione:

set sql_safe_updates = 0;

È sempre una buona idea ripristinare l'impostazione allo stato precedente una volta terminato, specialmente con impostazioni che potrebbero avere un impatto diffuso come questa.

Per abilitare la modalità Aggiornamenti sicuri, esegui quanto segue:

set sql_safe_updates = 1;

In effetti, potresti eseguire tutto contemporaneamente, in questo modo:

set sql_safe_updates = 0;

UPDATE Fruit
SET UnitId = 2
WHERE FruitName = 'Apple';

select * from Fruit;

set sql_safe_updates = 1;

Aggiorna più campi

È possibile aggiornare più campi utilizzando una virgola per separare ogni assegnazione di campo. In questo modo:

UPDATE Fruit
SET FruitName = 'Red Grapes', Inventory = '11'
WHERE FruitId = 5;

Risultato: