Detaillierte Beschreibung des MySQL-Ersetzens in der Verwendung

Detaillierte Beschreibung des MySQL-Ersetzens in der Verwendung

Die Ersetzungsanweisung ähnelt im Allgemeinen der Einfügungsanweisung. Wenn jedoch in der Tabelle ein Primär- oder eindeutiger Index vorhanden ist und die eingefügten Daten mit dem ursprünglichen Primärschlüssel oder eindeutig übereinstimmen, werden die ursprünglichen Daten gelöscht und neue hinzugefügt. Daher ist die Ausführung einer Ersetzungsanweisung manchmal gleichbedeutend mit der Ausführung einer Lösch- und Einfügeanweisung. Kommen wir direkt zum Beispiel:

Erstellen Sie eine Testtabelle mit drei Feldern: ID, Titel und UID. ID ist der automatisch inkrementierte Primärschlüssel und UID ist der eindeutige Index.

CREATE TABLE `test` (
 `Id` int(11) NICHT NULL AUTO_INCREMENT,
 `title` varchar(25) DEFAULT NULL COMMENT 'Titel',
 `uid` int(11) STANDARD NULL KOMMENTAR 'uid',
 Primärschlüssel (`Id`),
 EINZIGARTIGER SCHLÜSSEL `uid` (`uid`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8mb4;

in Test einfügen (Titel, UID) WERTE ('Hallo', '1');
in Test einfügen (Titel, UID) WERTE ('Nationalfeiertag', '2');

Die Ergebnisse sind wie folgt:

Beim Einfügen von Daten mit „Ersetzen in“:

REPLACE INTO test(title,uid) VALUES ('Diese Zeit ist 8 Tage frei','3');

Wenn die UID vorhanden ist, verwenden Sie die Anweisung „Replace into“.

REPLACE INTO test(title,uid) VALUES ('Dies sind die ersten Daten von Uid=1','1');

Ich hatte nicht erwartet, dass MySQL, wenn es auf Datenkonflikte stößt (also wenn UID-Duplikate auftreten), tatsächlich den alten Datensatz löscht und dann den neuen Datensatz schreibt. Ich glaube, dass Blogger anhand der obigen Beispiele Folgendes erkennen können:

„Ersetzen in“ ähnelt „Einfügen“, außer dass „Ersetzen in“ zuerst versucht, Daten in die Tabelle einzufügen.

1. Wenn festgestellt wird, dass diese Datenzeile bereits in der Tabelle vorhanden ist (bestimmt durch den Primärschlüssel oder den eindeutigen Index), löschen Sie zuerst diese Datenzeile und fügen Sie dann die neuen Daten ein. 2. Andernfalls fügen Sie die neuen Daten direkt ein.

Bitte beachten Sie, dass die Tabelle, in die Daten eingefügt werden, einen Primärschlüssel bzw. einen eindeutigen Index besitzen muss! Andernfalls werden die Daten durch „Ersetzen in“ direkt eingefügt, was zu doppelten Daten in der Tabelle führt.

MySQL replace into hat drei Formen:

1. Ersetzen Sie in tbl_name(col_name, ...) die Werte(...)

2. Ersetzen Sie es durch tbl_name(col_name, ...), wählen Sie ...

3. Ersetzen Sie in tbl_name den Satz col_name=value, …

Die erste Form ähnelt der Verwendung von „insert into“.

Die zweite Verwendung von „Replace Select“ ähnelt ebenfalls „Insert Select“. Bei dieser Verwendung müssen die Spaltennamen nicht unbedingt übereinstimmen. Tatsächlich kümmert sich MySQL nicht einmal um die von „Select“ zurückgegebenen Spaltennamen. Was es braucht, ist die Position der Spalte. Beispiel: „replace into tb1(name, title, mood) select rname, rtitle, rmood from tb2“; In diesem Beispiel wird „replace into“ verwendet, um alle Daten von tb2 in tb1 zu importieren.

Die dritte Verwendung des Ersetzungssatzes ähnelt der Verwendung des Aktualisierungssatzes. Bei einer Zuweisung wie „SET col_name = col_name + 1“ wird der Verweis auf den Spaltennamen auf der rechten Seite als DEFAULT(col_name) behandelt. Daher ist diese Zuweisung gleichwertig mit SET col_name = DEFAULT(col_name) + 1.

Die ersten beiden Formen werden häufiger verwendet. Das Schlüsselwort „into“ kann weggelassen werden, es ist jedoch besser, „into“ hinzuzufügen, damit die Bedeutung intuitiver ist. Darüber hinaus weist MySQL Spalten ohne angegebene Werte automatisch Standardwerte zu.

Das könnte Sie auch interessieren:
  • Verwendung und Unterschiedsanalyse von „Ersetzen in“ und „Einfügen in“ beim Update doppelter Schlüssel in MySQL
  • Erklärung zur Verwendung von „Ersetzen“ und „Ersetzen in“ in MySQL
  • Detaillierte Erklärung zum Ersetzen in ein Beispiel in MySQL
  • Eine kurze Analyse der MySQL-Ersetzungs-Anweisung (Teil 2)
  • Eine kurze Analyse der MySQL-Replace-Into-Anweisung (I)
  • Detaillierte Erklärung zur Verwendung der replace into-Anweisung in MySQL
  • Eine kurze Analyse der Verwendung von MySQL replace in
  • Der wirkliche Unterschied zwischen MySQLs Ersetzen in und Einfügen in bei doppeltem Schlüsselupdate
  • Analyse der Unterschiede zwischen REPLACE INTO und INSERT INTO in MySQL
  • Verwendung von MySQL Replace INTO

<<:  JSON (JavaScript Object Notation) in einem Artikel verstehen

>>:  Schritte zum Wiederherstellen von Code aus einem Docker-Container-Image

Artikel empfehlen

CSS3-Randeffekte

Was ist CSS? CSS (Abkürzung für Cascading Style S...

Eine kurze Diskussion über die Definition und Vorsichtsmaßnahmen von H-Tags

Den Ergebnissen zufolge gibt es für die Definitio...

CSS zum Erzielen des Skeleton Screen-Effekts

Beim Laden von Netzwerkdaten wird zur Verbesserun...

MySQL sollte niemals Update-Anweisungen wie diese schreiben

Inhaltsverzeichnis Vorwort Ursache Phänomen warum...

So legen Sie die Position des Blockelements in der Mitte des Fensters fest

So legen Sie die Position des Blockelements in de...

So ändern Sie die Kodierung der MySQL-Datenbank in utf8mb4

Die utf8mb4-Kodierung ist eine Obermenge der utf8...

Perfekte Lösung zur vertikalen Zentrierung von Formelementen

Code kopieren Der Code lautet wie folgt: <!DOC...

So ändern Sie die Master-Slave-Replikationsoptionen in MySQL online

Vorwort: Die am häufigsten verwendete Architektur...

Ubuntu-Grundeinstellungen: Installation und Nutzung des OpenSSH-Servers

Protokollieren Sie die Installation und Verwendun...

MySQL deaktiviert die Überprüfung der Kennwortstärke

Informationen zur Überprüfung der Kennwortstärke:...

Natives JS zur Implementierung eines atmenden Karussells

Heute zeige ich Ihnen ein mit nativem JS implemen...

GET POST Unterschiede

1. „Get“ wird verwendet, um Daten vom Server abzu...

js Drag & Drop-Tabelle zur Realisierung der Inhaltsberechnung

In diesem Artikelbeispiel wird der spezifische Co...

Hallo – Erfahrungsaustausch zum Entwurf von Dialogfeldern

„Was ist los?“ Sofern Sie nicht an bestimmte Arten...