Instrucțiunea REPLACE din MySQL este o extensie a standardului SQL. Această instrucțiune funcționează la fel ca instrucțiunea INSERT, cu excepția faptului că, dacă un rând vechi se potrivește cu noua înregistrare din tabel pentru o CHEIE PRIMARĂ sau un index UNIC, această comandă a șters rândul vechi înainte ca noul rând să fie adăugat.
Această declarație este necesară atunci când dorim să actualizăm înregistrările existente în tabel pentru a le menține actualizate. Dacă folosim interogarea de inserare standard în acest scop, va da o intrare Duplicată pentru CHEIA PRIMARIA sau o eroare de cheie UNICA. În acest caz, vom folosi instrucțiunea REPLACE pentru a ne îndeplini sarcina. Comanda REPLACE necesită unul dintre cele două posibil au loc acțiuni:
- Dacă nu se găsește nicio valoare care să se potrivească cu rândul de date existent, atunci se execută o instrucțiune INSERT standard.
- Dacă se găsește înregistrarea duplicată, comanda înlocuire va șterge rândul existent și apoi va adăuga noua înregistrare în tabel.
În instrucțiunea REPLACE, actualizarea a fost efectuată în doi pași. Mai întâi, va șterge înregistrarea existentă, apoi va fi adăugată înregistrarea nou actualizată, similar unei comenzi standard INSERT. Astfel, putem spune că instrucțiunea REPLACE îndeplinește două funcții standard, ȘTERGE și INTRODUCE .
Sintaxă
Următoarele sunt sintaxa lui A INLOCUI declarație în MySQL :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
MySQL REPLACE Exemplu
Să înțelegem funcționarea instrucțiunii REPLACE în MySQL cu ajutorul unui exemplu. Mai întâi, vom crea un tabel numit 'Persoană' folosind următoarea afirmație:
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 );
Apoi, trebuie să completăm înregistrarea în tabel folosind INTRODUCE declarație după cum urmează:
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');
Executați SELECTAȚI declarație pentru a verifica înregistrările care pot fi afișate în rezultatul de mai jos:
După verificarea datelor într-un tabel, putem înlocui orice rând vechi cu rândul nou folosind instrucțiunea REPLACE. Executați instrucțiunea de mai jos care actualizează orașul unei persoane al cărei ID este 4 .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
După executarea cu succes a instrucțiunii de mai sus, este necesară interogarea datelor din tabelul Persoană din nou pentru a verifica înlocuirea.
Valoarea în Nume și e-mail coloanele sunt NUL acum. Se datorează faptului că instrucțiunea REPLACE funcționează după cum urmează:
- Această declarație încearcă mai întâi să insereze un nou rând în tabelul Persoană. Dar inserarea unui nou rând nu a reușit deoarece id = 4 există deja în tabel.
- Deci această declarație șterge mai întâi rândul al cărui id = 4 și apoi introduceți un rând nou cu același id și oraș ca Amsterdam. Deoarece nu am specificat valoarea pentru coloana nume și e-mail, aceasta a fost setată la NULL.
Instrucțiunea MySQL REPLACE pentru a actualiza un rând
Putem folosi următoarea instrucțiune REPLACE pentru a actualiza datele unui rând într-un tabel:
REPLACE INTO table SET column1 = value1, column2 = value2;
Sintaxa de mai sus este similară cu cea Declarație UPDATE cu excepția cuvântului cheie REPLACE. Este de remarcat că nu putem folosi clauza WHERE cu această declarație.
Executați exemplul de mai jos care utilizează instrucțiunea REPLACE pentru a actualiza orașul persoanei numite Mike din California la Birmingham .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
După verificarea tabelului, putem vedea următoarea ieșire:
Dacă nu am specificat valoarea coloanei în clauza SET , această comandă funcționează ca Declarație UPDATE , ceea ce înseamnă că instrucțiunea REPLACE va folosi valoarea implicită a acelei coloane.
MySQL REPLACE pentru a introduce date din instrucțiunea SELECT.
Putem folosi următoarea instrucțiune REPLACE INTO pentru a insera date într-un tabel cu datele returnate dintr-o interogare.
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
Este de remarcat că interogarea REPLACE de mai sus este similară cu cea INSERT INTO SELECT afirmație. Executați exemplul de mai jos care utilizează instrucțiunea REPLACE INTO pentru a copia un rând din același tabel.
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
După verificarea tabelului, vom obține următorul rezultat. În această ieșire, putem vedea că copia unui rând din același tabel este adăugată cu succes.