logo

SUBSTITUIR MySQL

La sentència REPLACE de MySQL és una extensió de l'estàndard SQL. Aquesta instrucció funciona igual que la instrucció INSERT, excepte que si una fila antiga coincideix amb el registre nou de la taula per a una CLAU PRIMÀRIA o un índex ÚNIC, aquesta ordre suprimirà la fila antiga abans que s'afegeixi la nova.

Aquesta declaració és necessària quan volem actualitzar els registres existents a la taula per mantenir-los actualitzats. Si utilitzem la consulta d'inserció estàndard per a aquest propòsit, donarà una entrada duplicada per a la CLAU PRIMÀRIA o un error de clau ÚNICA. En aquest cas, utilitzarem la instrucció REPLACE per realitzar la nostra tasca. L'ordre REPLACE requereix un dels dos possible es duen a terme accions:

  • Si no es troba cap valor que coincideixi amb la fila de dades existent, es realitza una instrucció INSERT estàndard.
  • Si es troba el registre duplicat, l'ordre substituirà suprimirà la fila existent i després afegirà el registre nou a la taula.

A la instrucció REPLACE, l'actualització es va realitzar en dos passos. Primer, suprimirà el registre existent i, a continuació, s'afegeix el registre recentment actualitzat, de manera similar a una ordre estàndard INSERT. Així, podem dir que la sentència REPLACE realitza dues funcions estàndard, ELIMINAR i INSERT .

Sintaxi

java concatenar cadenes

Les següents són la sintaxi de SUBSTITUIR declaració en MySQL :

 REPLACE [INTO] table_name(column_list) VALUES(value_list); 

MySQL REPLACE Exemple

Entenem el funcionament de la instrucció REPLACE a MySQL amb l'ajuda d'un exemple. Primer, crearem una taula anomenada 'Persona' utilitzant la següent declaració:

camí establert en java
 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 ); 

A continuació, hem d'omplir el registre a la taula amb l' INSERT declaració com a continuació:

 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'); 

Executar el SELECCIONA declaració per verificar els registres que es poden mostrar a la sortida següent:

SUBSTITUIR MySQL

Després de verificar les dades en una taula, podem substituir qualsevol fila antiga per la nova mitjançant la instrucció REPLACE. Executeu la instrucció següent que actualitza el ciutat d'una persona l'identificador de la qual és 4 .

 REPLACE INTO Person (id, city) VALUES(4,'Amsterdam'); 

Després de l'execució correcta de la instrucció anterior, cal tornar a consultar les dades de la taula Persona per verificar la substitució.

trobar a la cadena c++
SUBSTITUIR MySQL

El valor en el nom i correu electrònic columnes són NUL ara. És perquè la instrucció REPLACE funciona de la següent manera:

  • Aquesta declaració primer intenta inserir una fila nova a la taula Persona. Però la inserció d'una nova fila ha fallat perquè l'id = 4 ja existeix a la taula.
  • Per tant, aquesta declaració primer elimina la fila l'identificador de la qual és 4 i després inseriu una nova fila amb el mateix identificador i ciutat que Amsterdam. Com que no hem especificat el valor per a la columna de nom i correu electrònic, es va establir en NULL.

Instrucció MySQL REPLACE per actualitzar una fila

Podem utilitzar la següent instrucció REPLACE per actualitzar les dades d'una fila en una taula:

 REPLACE INTO table SET column1 = value1, column2 = value2; 

La sintaxi anterior és similar a la Declaració UPDATE excepte la paraula clau REPLACE. Cal tenir en compte que no podem utilitzar la clàusula ON amb aquesta declaració.

Executeu l'exemple següent que utilitza la instrucció REPLACE per actualitzar la ciutat de la persona anomenada Mike des de Califòrnia a Birmingham .

 REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham'; 

Després de verificar la taula, podem veure la següent sortida:

SUBSTITUIR MySQL

Si no hem especificat el valor de la columna al fitxer clàusula SET , aquesta comanda funciona com la Declaració UPDATE , el que significa que la instrucció REPLACE utilitzarà el valor predeterminat d'aquesta columna.

MySQL REPLACE per inserir dades de la instrucció SELECT.

Podem utilitzar la següent instrucció REPLACE INTO per inserir dades en una taula amb les dades retornades d'una consulta.

 REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition; 

Cal tenir en compte que la consulta REPLACE anterior és similar a la INSERTAR A SELECCIONAR declaració. Executeu l'exemple següent que utilitza la instrucció REPLACE INTO per copiar una fila dins de la mateixa taula.

exemples dfa
 REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2; 

Després de verificar la taula, obtindrem la següent sortida. En aquesta sortida, podem veure que la còpia d'una fila dins de la mateixa taula s'ha afegit correctament.

SUBSTITUIR MySQL