Sommario: in questo tutorial, imparerete come usare l’istruzione MySQL REPLACE
per inserire o aggiornare dati nelle tabelle del database.
Introduzione all’istruzione MySQL REPLACE
L’istruzione MySQL REPLACE
è un’estensione dello standard SQL. L’istruzione MySQL REPLACE
funziona come segue:
Passo 1. Inserire una nuova riga nella tabella, se si verifica un errore di chiave duplicata.
Step 2. Se l’inserimento fallisce a causa di un errore di chiave duplicata:
- Cancellare la riga in conflitto che causa l’errore di chiave duplicata dalla tabella.
- Inserire nuovamente la nuova riga nella tabella.
Per determinare se la nuova riga esiste già nella tabella, MySQL usa l’indice PRIMARY KEY
o UNIQUE KEY
. Se la tabella non ha uno di questi indici, il REPLACE
funziona come una dichiarazione INSERT
.
Per utilizzare l’istruzione REPLACE
, è necessario avere almeno entrambi i privilegi INSERT
e DELETE
per la tabella.
Nota che MySQL ha la funzione REPLACE
stringa che non è la dichiarazione REPLACE
trattata in questo tutorial.
Utilizzare MySQL REPLACE per inserire una nuova riga
Il seguente illustra la sintassi dell’istruzione REPLACE
:
Code language: SQL (Structured Query Language) (sql)REPLACE table_name(column_list)VALUES(value_list);
INSERT
tranne che per la parola chiave REPLACE
.Diamo un’occhiata al seguente esempio di utilizzo dell’istruzione REPLACE
per vedere come funziona.
Primo, create una nuova tabella chiamata cities
come segue:
Code language: SQL (Structured Query Language) (sql)CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
In seguito, inserite alcune righe nella tabella cities
:
Code language: SQL (Structured Query Language) (sql)INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Poi, interroga i dati della tabella cities
per verificare l’operazione di inserimento.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
Dopo di che, utilizzare l’istruzione REPLACE
per aggiornare la popolazione della città Los Angeles
a 3696820
.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(id,population)VALUES(2,3696820);
Infine, interrogate nuovamente i dati della tabella cities
per verificare la sostituzione.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
Il valore nella colonna name
NULL
ora. L’istruzione REPLACE
funziona come segue:
- Prima, l’istruzione
REPLACE
ha cercato di inserire una nuova riga nellacities
tabella. L’inserimento è fallito perché l’id 2 esiste già nella tabellacities
. - Poi, l’istruzione
REPLACE
ha cancellato la riga con id 2 e ha inserito una nuova riga con lo stesso id 2 e la popolazione3696820
. Poiché non è stato specificato alcun valore per la colonna name, essa è stata impostata suNULL
.
Utilizzando l’istruzione MySQL REPLACE per aggiornare una riga
Il seguente illustra come utilizzare l’istruzione REPLACE
per aggiornare i dati:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO tableSET column1 = value1, column2 = value2;
Questa istruzione è come l’istruzione UPDATE
tranne per la parola chiave REPLACE
. Inoltre, non ha la clausola WHERE
.
Questo esempio usa la dichiarazione REPLACE
per aggiornare la popolazione della città Phoenix
a 1768980
:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
A differenza dell’istruzione UPDATE
, se non si specifica il valore della colonna nella clausola SET
, l’istruzione REPLACE
userà il valore di default di quella colonna.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
Utilizzare MySQL REPLACE per inserire dati da un’istruzione SELECT
Il seguente illustra l’istruzione REPLACE
che inserisce dati in una tabella con i dati provenienti da una query.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Nota che questa forma dell’istruzione REPLACE
è simile all’istruzione INSERT INTO SELECT
.
L’istruzione seguente usa l’istruzione REPLACE INTO
per copiare una riga nella stessa tabella:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
In questo tutorial, hai imparato diverse forme dell’istruzione MySQL REPLACE
per inserire o aggiornare dati in una tabella.
- Questo tutorial è stato utile?
- SìNo