L'istruzione REPLACE in MySQL è un'estensione dello standard SQL. Questa istruzione funziona allo stesso modo dell'istruzione INSERT, tranne per il fatto che se una vecchia riga corrisponde al nuovo record nella tabella per un indice PRIMARY KEY o UNIQUE, questo comando elimina la vecchia riga prima che venga aggiunta la nuova riga.
Questa istruzione è richiesta quando vogliamo aggiornare i record esistenti nella tabella per mantenerli aggiornati. Se utilizziamo la query di inserimento standard per questo scopo, fornirà una voce duplicata per PRIMARY KEY o un errore di chiave UNIQUE. In questo caso, utilizzeremo l'istruzione REPLACE per eseguire il nostro compito. Il comando REPLACE richiede uno dei due possibile si svolgono le azioni:
- Se non viene trovato alcun valore corrispondente con la riga di dati esistente, viene eseguita un'istruzione INSERT standard.
- Se viene trovato il record duplicato, il comando di sostituzione eliminerà la riga esistente e quindi aggiungerà il nuovo record nella tabella.
Nell'istruzione REPLACE, l'aggiornamento viene eseguito in due passaggi. Innanzitutto, eliminerà il record esistente, quindi verrà aggiunto il record appena aggiornato, in modo simile a un comando INSERT standard. Pertanto, possiamo dire che l'istruzione REPLACE esegue due funzioni standard, ELIMINARE E INSERIRE .
Sintassi
Di seguito è riportata la sintassi di SOSTITUIRE dichiarazione in MySQL :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
Esempio di sostituzione MySQL
aggiunta di stringhe in Java
Cerchiamo di comprendere il funzionamento dell'istruzione REPLACE in MySQL con l'aiuto di un esempio. Per prima cosa creeremo una tabella denominata 'Persona' utilizzando la seguente dichiarazione:
CREATE TABLE Person ( ID int AUTO_INCREMENT PRIMARY KEY, Name varchar(45) DEFAULT NULL, Email varchar(45) DEFAULT NULL UNIQUE, City varchar(25) DEFAULT NULL );
Successivamente, dobbiamo riempire il record nella tabella utilizzando il comando INSERIRE dichiarazione come di seguito:
INSERT INTO Person(ID, Name, Email, City) VALUES (1,'Mike', '[email protected]', 'California'), (2, 'Alexandar', '[email protected]', 'New York'), (3, 'Adam', '[email protected]', 'Los Angeles'), (4, 'Peter', '[email protected]', 'Alaska');
Esegui il SELEZIONARE dichiarazione per verificare i record che possono essere visualizzati nell'output seguente:
Dopo aver verificato i dati in una tabella, possiamo sostituire qualsiasi vecchia riga con la nuova riga utilizzando l'istruzione REPLACE. Esegui l'istruzione seguente che aggiorna il file città di una persona il cui ID è 4 .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
Dopo aver eseguito con successo la suddetta istruzione, è necessario interrogare nuovamente i dati della tabella Persona per verificare la sostituzione.
Il valore in nome E e-mail le colonne sono NULLO Ora. È perché l'istruzione REPLACE funziona come segue:
- Questa istruzione tenta innanzitutto di inserire una nuova riga nella tabella Person. Ma l'inserimento di una nuova riga non è riuscito perché l'id = 4 esiste già nella tabella.
- Quindi questa istruzione prima cancella la riga il cui id = 4 e poi inserisce una nuova riga con lo stesso id e città di Amsterdam. Poiché non abbiamo specificato il valore per la colonna nome ed e-mail, è stato impostato su NULL.
Istruzione MySQL REPLACE per aggiornare una riga
Possiamo utilizzare la seguente istruzione REPLACE per aggiornare i dati di una riga in una tabella:
REPLACE INTO table SET column1 = value1, column2 = value2;
La sintassi precedente è simile a Dichiarazione di AGGIORNAMENTO ad eccezione della parola chiave REPLACE. È da notare che non possiamo usare la clausola WHERE con questa istruzione.
Esegui l'esempio seguente che utilizza l'istruzione REPLACE per aggiornare la città della persona denominata Mike da California A Birmingham .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
Dopo la verifica della tabella, possiamo vedere il seguente output:
Se non abbiamo specificato il valore della colonna nel file clausola SET , questo comando funziona come Dichiarazione di AGGIORNAMENTO , il che significa che l'istruzione REPLACE utilizzerà il valore predefinito di quella colonna.
MySQL REPLACE per inserire i dati dall'istruzione SELECT.
Possiamo utilizzare la seguente istruzione REPLACE INTO per inserire i dati in una tabella con i dati restituiti da una query.
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
È da notare che la query REPLACE di cui sopra è simile a INSERIRE NELLA SELEZIONE dichiarazione. Esegui l'esempio seguente che utilizza l'istruzione REPLACE INTO per copiare una riga all'interno della stessa tabella.
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
Dopo la verifica della tabella, otterremo il seguente output. In questo output, possiamo vedere che la copia di una riga all'interno della stessa tabella è stata aggiunta con successo.