Inserire e modificare dati in MySQL

Mattepuffo's logo
Inserire e modificare dati in MySQL

Inserire e modificare dati in MySQL

Vi propongo una piccola guida all'inserimento e alla modifica dei dati nel celebre database MySQL.

Ovviamente do per scontato che il database sia installato e funzionante, e che sia già stato creato almeno un database e una tabella.

Loggatevi al vostro database e selezionatelo.

Prima di tutto vediamo come inserire dei dati.

INSERT

Per inserire dei dati dobbiamo usare il comando INSERT seguito da VALUES.

La sintassi generale è questa:

 

INSERT INTO tabella (campo) VALUES (valore);

INSERT INTO rubrica (nome, cognome) VALUES ('Francesco', 'Verdi');

Possiamo usare anche SET, che associa ad ogni colonna il valore corrispondente e separa gli elementi con una virgola:

INSERT INTO rubrica SET id=13, nome=Francesco, cognome=Verdi;

Se non vengono inseriti valori, alle colonne verranno assegnati quelli di default.

Ad esempio se c'è un campo id settato con NOT NULL e AUTO_INCREMENT, questo prenderà il valore successivo al record precedente.

E' possibile anche inserire più valori insieme:

INSERT INTO rubrica (nome, cognome) VALUES ('Francesco', 'Verdi'), ('Mario', 'Rossi');

REPLACE

Se una tabella contiene una colonna indicizzata con una chiave primaria o un indice unico, un tentativo di inserire un valore già esistente ci darà errore duplicate-key violation.

Per ovviare dovremmo prima cancellare il record e poi scriverne uno nuovo; oppure aggiornarlo.

Ma c'è una maniera più semplice: il comando REPLACE.

Questo utilizza prima DELETE e poi INSERT in maniera automatica e trasparente.

La sintassi è simile a quella di INSERT:

REPLACE INTO rubrica (id, nome, cognome) VALUES (7, 'Francesco', 'Rossi');

Query OK, 2 rows affected

Come vedete ci sono due righe interessate.

Possiamo fare anche modifiche multiple:

REPLACE INTO rubrica (id,nome,cognome) VALUES (19, 'Francesco', 'Rossi'), (23, 'Mario', 'Gialli');

Query ok, 3 rows affected

Records: 2 Duplicates: 1

Anche qui possiamo usare SET:

REPLACE INTO rubrica SET id=18, nome='Andrea', cognome='Viola';

Attenzione che se una tabella contiene più colonne indicizzate con indici unici, l'aggiunta di un nuovo record con REPLACE potrebbe causare la violazione per la duplicazione della chiave per più record, causando la sostituzione di tutti i record interessati.

UPDATE

Questo comando modifica i record esistenti.

La sintassi è:

UPDATE tabella SET colonna=valore, colonna2=valore2,... WHERE...;

La clausola WHERE è opzionale.

Facciamo un esempio:

UPDATE rubrica SET nome="Francesca" WHERE id=18;

Questo comando cambierà il nome in Francesca al record 18.

I valori non ammessi vengono convertiti.

Questo comando non produce effetto se:

  • la query non trova alcun record da modificare
  • la query non modifica nessun valore (ad esempio viene ridato lo stesso valore)

Nell'aggiornamento è possibile usare anche LIMIT e ORDER BY.

LIMIT è utile quando si hanno più record che corrispondono agli stessi criteri e se no vogliono aggiornare solo alcuni.

Se abbiamo due nomi Marco, possiamo usare LIMIT per aggiornarne solo uno

UPDATE rubrica SET nome="Carlo" WHERE nome="Marco" LIMIT 1;

DELETE e TRUNCATE TABLE

Infine vediamo come cancellare i record.

DELETE permette di specificare una clausola WHERE per individuare i record da cancellare, mentre TRUNCATE TABLE cancella sempre tutti i record della tabella.

Per cancellare tutti i record possiamo usare:

DELETE FROM tabella;

TRUNCATE TABLE tabella;

TRUNCATE tabella;

Se vogliamo rimuovere solo alcuni record dobbiamo usare DELETE.

DELETE FROM tabella WHERE id=3;

Se omettiamo WHERE cancelliamo tutto come detto sopra.

Se è presente una colonna con AUTO_INCREMENT la cancellazione di tutti i record comporta anche l'azzeramento del contatore; di conseguenza il prox numero inserito sarà di nuovo 1.

Per non azzerare il contatore si può usare:

DELETE FROM tabella WHERE id>0;

Questo comando però risulta un pò più lento in quanto dovrà controllare ogni id.

E in generale DELETE è più lento di TRUNCATE TABLE.


Condividi

Commentami!