Die REPLACE-Anweisung in MySQL ist eine Erweiterung des SQL-Standards. Diese Anweisung funktioniert genauso wie die INSERT-Anweisung, außer dass dieser Befehl die alte Zeile löscht, bevor die neue Zeile hinzugefügt wird, wenn eine alte Zeile mit dem neuen Datensatz in der Tabelle für einen PRIMARY KEY- oder einen UNIQUE-Index übereinstimmt.
Diese Anweisung ist erforderlich, wenn wir die vorhandenen Datensätze in der Tabelle aktualisieren möchten, um sie auf dem neuesten Stand zu halten. Wenn wir für diesen Zweck die Standard-Einfügungsabfrage verwenden, wird ein doppelter Eintrag für PRIMARY KEY oder ein UNIQUE-Schlüsselfehler ausgegeben. In diesem Fall verwenden wir die REPLACE-Anweisung, um unsere Aufgabe auszuführen. Der REPLACE-Befehl erfordert einen von beiden möglich Aktionen finden statt:
- Wenn kein passender Wert mit der vorhandenen Datenzeile gefunden wird, wird eine standardmäßige INSERT-Anweisung ausgeführt.
- Wenn der doppelte Datensatz gefunden wird, löscht der Ersetzungsbefehl die vorhandene Zeile und fügt dann den neuen Datensatz in die Tabelle ein.
In der REPLACE-Anweisung wird die Aktualisierung in zwei Schritten durchgeführt. Zuerst wird der vorhandene Datensatz gelöscht und dann der neu aktualisierte Datensatz hinzugefügt, ähnlich wie bei einem Standard-INSERT-Befehl. Somit können wir sagen, dass die REPLACE-Anweisung zwei Standardfunktionen ausführt: LÖSCHEN Und EINFÜGEN .
Syntax
Im Folgenden finden Sie die Syntax von ERSETZEN Aussage in MySQL :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
MySQL REPLACE-Beispiel
Lassen Sie uns anhand eines Beispiels die Funktionsweise der REPLACE-Anweisung in MySQL verstehen. Zuerst erstellen wir eine Tabelle mit dem Namen 'Person' unter Verwendung der folgenden Anweisung:
Multiplexer
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 );
Als nächstes müssen wir den Datensatz mithilfe von in die Tabelle eintragen EINFÜGEN Aussage wie folgt:
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');
Führen Sie die aus WÄHLEN Anweisung, um die Datensätze zu überprüfen, die in der folgenden Ausgabe angezeigt werden können:
Nachdem wir die Daten in einer Tabelle überprüft haben, können wir mit der REPLACE-Anweisung jede alte Zeile durch die neue Zeile ersetzen. Führen Sie die folgende Anweisung aus, die die aktualisiert Stadt einer Person, deren ID 4 ist .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
Nach erfolgreicher Ausführung der obigen Anweisung ist es erforderlich, die Daten der Tabelle Person erneut abzufragen, um die Ersetzung zu überprüfen.
Der Wert in der Name Und Email Spalten sind NULL Jetzt. Dies liegt daran, dass die REPLACE-Anweisung wie folgt funktioniert:
- Diese Anweisung versucht zunächst, eine neue Zeile in die Personentabelle einzufügen. Das Einfügen einer neuen Zeile ist jedoch fehlgeschlagen, da die ID = 4 bereits in der Tabelle vorhanden ist.
- Diese Anweisung löscht also zuerst die Zeile mit der ID = 4 und fügt dann eine neue Zeile mit derselben ID und Stadt wie Amsterdam ein. Da wir den Wert für die Spalte „Name“ und „E-Mail“ nicht angegeben haben, wurde er auf NULL gesetzt.
MySQL REPLACE-Anweisung zum Aktualisieren einer Zeile
Wir können die folgende REPLACE-Anweisung verwenden, um Zeilendaten in einer Tabelle zu aktualisieren:
REPLACE INTO table SET column1 = value1, column2 = value2;
Die obige Syntax ähnelt der UPDATE-Anweisung mit Ausnahme des Schlüsselworts REPLACE. Es ist zu beachten, dass wir die WHERE-Klausel mit dieser Anweisung nicht verwenden können.
Führen Sie das folgende Beispiel aus, das die REPLACE-Anweisung verwendet, um die Stadt der genannten Person zu aktualisieren Mike aus Kalifornien Zu Birmingham .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
Nach Überprüfung der Tabelle können wir die folgende Ausgabe sehen:
Wenn wir den Wert der Spalte nicht in angegeben haben SET-Klausel , dieser Befehl funktioniert wie der UPDATE-Anweisung , was bedeutet, dass die REPLACE-Anweisung den Standardwert dieser Spalte verwendet.
abstrakte Klasse
MySQL REPLACE zum Einfügen von Daten aus der SELECT-Anweisung.
Wir können die folgende REPLACE INTO-Anweisung verwenden, um Daten mit den von einer Abfrage zurückgegebenen Daten in eine Tabelle einzufügen.
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
Es ist zu beachten, dass die obige REPLACE-Abfrage der ähnelt IN SELECT EINFÜGEN Stellungnahme. Führen Sie das folgende Beispiel aus, das die REPLACE INTO-Anweisung verwendet, um eine Zeile innerhalb derselben Tabelle zu kopieren.
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
Nach Überprüfung der Tabelle erhalten wir die folgende Ausgabe. In dieser Ausgabe können wir sehen, dass die Kopie einer Zeile innerhalb derselben Tabelle erfolgreich hinzugefügt wurde.