Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie die MySQL REPLACE
-Anweisung verwenden, um Daten in Datenbanktabellen einzufügen oder zu aktualisieren.
Einführung in das MySQL REPLACE Statement
Das MySQL REPLACE
Statement ist eine Erweiterung des SQL Standards. Das MySQL REPLACE
-Statement funktioniert wie folgt:
Schritt 1. Einfügen einer neuen Zeile in die Tabelle, wenn ein Duplikatschlüssel-Fehler auftritt.
Schritt 2. Wenn das Einfügen aufgrund eines Doppelschlüsselfehlers fehlschlägt:
- Löschen Sie die widersprüchliche Zeile, die den Doppelschlüsselfehler verursacht, aus der Tabelle.
- Fügen Sie die neue Zeile erneut in die Tabelle ein.
Um festzustellen, ob die neue Zeile bereits in der Tabelle existiert, verwendet MySQL den PRIMARY KEY
oder UNIQUE KEY
Index. Wenn die Tabelle keinen dieser Indizes hat, funktioniert das REPLACE
wie eine INSERT
-Anweisung.
Um die REPLACE
-Anweisung zu verwenden, müssen Sie mindestens sowohl die INSERT
– als auch die DELETE
-Rechte für die Tabelle haben.
Beachten Sie, dass MySQL die REPLACE
String-Funktion hat, die nicht die REPLACE
-Anweisung ist, die in diesem Tutorial behandelt wird.
MySQL REPLACE verwenden, um eine neue Zeile einzufügen
Das Folgende illustriert die Syntax der REPLACE
-Anweisung:
Code language: SQL (Structured Query Language) (sql)REPLACE table_name(column_list)VALUES(value_list);
INSERT
bis auf das Schlüsselwort REPLACE
.Schauen wir uns das folgende Beispiel für die Verwendung der REPLACE
-Anweisung an, um zu sehen, wie sie funktioniert.
Erstellen Sie zunächst eine neue Tabelle mit dem Namen cities
wie folgt:
Code language: SQL (Structured Query Language) (sql)CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
Nächste fügen Sie einige Zeilen in die Tabelle cities
ein:
Code language: SQL (Structured Query Language) (sql)INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Dann fragen Sie Daten aus der Tabelle cities
ab, um den Einfügevorgang zu überprüfen.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
Danach, verwenden Sie die REPLACE
-Anweisung, um die Einwohnerzahl der Los Angeles
-Stadt auf 3696820
zu aktualisieren.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(id,population)VALUES(2,3696820);
Schließlich fragen Sie die Daten der Tabelle cities
erneut ab, um die Ersetzung zu überprüfen.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
Der Wert in der name
-Spalte ist jetzt NULL
. Die REPLACE
-Anweisung funktioniert wie folgt:
- Zunächst versuchte die
REPLACE
-Anweisung, eine neue Zeile incities
die Tabelle einzufügen. Das Einfügen schlug fehl, weil die id 2 bereits in der Tabellecities
vorhanden ist. - Dann löschte die
REPLACE
-Anweisung die Zeile mit der id 2 und fügte eine neue Zeile mit der gleichen id 2 und der Population3696820
ein. Da für die Spalte name kein Wert angegeben ist, wurde sie aufNULL
gesetzt.
MySQL REPLACE-Anweisung verwenden, um eine Zeile zu aktualisieren
Im Folgenden wird gezeigt, wie Sie die REPLACE
-Anweisung verwenden, um Daten zu aktualisieren:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO tableSET column1 = value1, column2 = value2;
Diese Anweisung ist wie die UPDATE
-Anweisung, mit Ausnahme des Schlüsselworts REPLACE
. Außerdem hat es keine WHERE
-Klausel.
In diesem Beispiel wird die REPLACE
-Anweisung verwendet, um die Einwohnerzahl der Phoenix
-Stadt auf 1768980
zu aktualisieren:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
Wenn Sie in der SET
-Klausel keinen Wert für die Spalte angeben, verwendet die REPLACE
-Anweisung den Standardwert dieser Spalte, wie bei der UPDATE
-Anweisung.
Code language: SQL (Structured Query Language) (sql)SELECT * FROM cities;
MySQL REPLACE zum Einfügen von Daten aus einem SELECT-Statement verwenden
Das folgende Beispiel zeigt das REPLACE
-Statement, das Daten in eine Tabelle mit den Daten aus einer Abfrage einfügt.
Code language: SQL (Structured Query Language) (sql)REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Beachten Sie, dass diese Form der REPLACE
-Anweisung der INSERT INTO SELECT
-Anweisung ähnlich ist.
Die folgende Anweisung verwendet die REPLACE INTO
-Anweisung, um eine Zeile innerhalb derselben Tabelle zu kopieren:
Code language: SQL (Structured Query Language) (sql)REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
In diesem Tutorial haben Sie verschiedene Formen der MySQL REPLACE
-Anweisung kennengelernt, um Daten in einer Tabelle einzufügen oder zu aktualisieren.
- War dieses Tutorial hilfreich?
- JaNein