MySQL REPLACE

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:

REPLACE table_name(column_list)VALUES(value_list);
Code language: SQL (Structured Query Language) (sql)
Es ähnelt der Anweisung 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:

CREATE TABLE cities ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), population INT NOT NULL);
Code language: SQL (Structured Query Language) (sql)

Nächste fügen Sie einige Zeilen in die Tabelle cities ein:

INSERT INTO cities(name,population)VALUES('New York',8008278), ('Los Angeles',3694825), ('San Diego',1223405);
Code language: SQL (Structured Query Language) (sql)

Dann fragen Sie Daten aus der Tabelle cities ab, um den Einfügevorgang zu überprüfen.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
MySQL REPLACE - Beispieltabelle

Danach, verwenden Sie die REPLACE-Anweisung, um die Einwohnerzahl der Los Angeles-Stadt auf 3696820 zu aktualisieren.

REPLACE INTO cities(id,population)VALUES(2,3696820);
Code language: SQL (Structured Query Language) (sql)

Schließlich fragen Sie die Daten der Tabelle cities erneut ab, um die Ersetzung zu überprüfen.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)
MySQL REPLACE Beispiel

Der Wert in der name-Spalte ist jetzt NULL. Die REPLACE-Anweisung funktioniert wie folgt:

  1. Zunächst versuchte die REPLACE-Anweisung, eine neue Zeile in cities die Tabelle einzufügen. Das Einfügen schlug fehl, weil die id 2 bereits in der Tabelle cities vorhanden ist.
  2. 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 Population 3696820 ein. Da für die Spalte name kein Wert angegeben ist, wurde sie auf NULL gesetzt.

MySQL REPLACE-Anweisung verwenden, um eine Zeile zu aktualisieren

Im Folgenden wird gezeigt, wie Sie die REPLACE-Anweisung verwenden, um Daten zu aktualisieren:

REPLACE INTO tableSET column1 = value1, column2 = value2;
Code language: SQL (Structured Query Language) (sql)

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:

REPLACE INTO citiesSET id = 4, name = 'Phoenix', population = 1768980;
Code language: SQL (Structured Query Language) (sql)

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.

SELECT * FROM cities;
Code language: SQL (Structured Query Language) (sql)

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.

REPLACE INTO table_1(column_list)SELECT column_listFROM table_2WHERE where_condition;
Code language: SQL (Structured Query Language) (sql)

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:

REPLACE INTO cities(name,population)SELECT name, population FROM cities WHERE id = 1;
Code language: SQL (Structured Query Language) (sql)

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.