Erklärung zur Verwendung von „Ersetzen“ und „Ersetzen in“ in MySQL

Erklärung zur Verwendung von „Ersetzen“ und „Ersetzen in“ in MySQL

„Replace“ und „Replace into“ von MySQL sind beides häufig verwendete Funktionen. „Replace“ führt tatsächlich eine Aktualisierungsoperation aus, anstatt zuerst zu löschen und dann einzufügen. „Replace into“ ist tatsächlich sehr ähnlich zu „Insert into“, aber bei „Replace into“ wird der alte Datensatz gelöscht, bevor der neue Datensatz eingefügt wird, wenn ein alter Datensatz in der Tabelle für einen PRIMARY KEY oder einen UNIQUE-Index denselben Wert hat wie ein neuer Datensatz.

Ersetzen ist eine in MySQL häufig verwendete Funktion zum Verarbeiten von Zeichenfolgen, die den Inhalt einer Zeichenfolge ersetzen kann. Es gibt auch eine ähnliche Zeichenfolgenverarbeitungsoperation namens Trim, auf die ich hier nicht näher eingehen werde.

Die Hauptfunktion von „Ersetzen in“ ähnelt der Einfügeoperation. Der Hauptunterschied besteht darin, dass beim Ersetzen anhand des Primärschlüssels oder des eindeutigen Index geprüft wird, ob die Daten vorhanden sind. Wenn die Daten vorhanden sind, werden sie vor der Aktualisierung gelöscht.

Beispiel:

#Tabellenstruktur:
CREATE TABLE `t_test` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(1) NICHT NULL STANDARD '',
 Primärschlüssel (`id`),
 EINZIGARTIGER SCHLÜSSEL `idx_name` (`name`) MIT BTREE
) ENGINE=InnoDB STANDARD-CHARSET=utf8mb4

Einfügen des ersten Datensatzes

INSERT INTO t_test (`Name`) WERTE ('a')
#oder REPLACE INTO t_test (`name`) VALUES ('a')

1062 - Duplicate entry 'a' for key 'idx_name', Time: 0.001000s . Die Verwendung von „replace into“ wird normal ausgeführt, mit der Ausnahme, dass die ID um 1 erhöht wird.

ps: Das Schlüsselwort into beim Ersetzen von into kann weggelassen werden. Sie sehen gleich aus, werden aber etwas anders verwendet.

1. ersetzen(Objekt,Suchen,Ersetzen)

Ersetzen Sie alle Vorkommen von Suche im Objekt durch Ersetzen.

select replace('www.jb51.net','w','n') from ... ---> nnn.jb51.net

Beispiel: Ersetzen Sie „Details“ im Namensfeld der Tabelle durch „Beschreibung“

update table set name=replace(name,'detail','description')

2. ersetzen durch

Entspricht: if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time = getdate() where id = 1;

REPLACE funktioniert ähnlich wie INSERT. Wenn ein alter Datensatz in der Tabelle für einen PRIMARY KEY oder einen UNIQUE-Index denselben Wert wie ein neuer Datensatz hat, wird der alte Datensatz gelöscht, bevor der neue Datensatz eingefügt wird.

Beachten Sie, dass die Verwendung einer REPLACE-Anweisung keinen Sinn ergibt, sofern die Tabelle nicht über einen PRIMARY KEY- oder UNIQUE-Index verfügt. Diese Anweisung wäre identisch mit INSERT, da kein Index verwendet wird, um zu bestimmen, ob die neue Zeile andere Zeilen dupliziert.

Die Werte aller Spalten werden aus den in der REPLACE INTO-Anweisung angegebenen Werten übernommen. Eventuell fehlende Spalten werden wie bei INSERT INTO auf die Standardwerte gesetzt. Sie können weder auf Werte aus der aktuellen Zeile verweisen, noch können Sie Werte in einer neuen Zeile verwenden. Wenn Sie eine Zuweisung wie „ SET col_name = col_name + 1 “ verwenden, wird die Referenz 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 .

Um REPLACE INTO zu verwenden, müssen Sie über INSERT- und DELETE-Berechtigungen für die Tabelle verfügen.

Die REPLACE-Anweisung gibt eine Zahl zurück, die die Anzahl der betroffenen Zeilen angibt. Diese Zahl ist die Summe der Anzahl gelöschter und eingefügter Zeilen. Wenn diese Zahl bei einem einzeiligen REPLACE 1 ist, wird eine Zeile eingefügt und es werden keine Zeilen gelöscht. Wenn diese Zahl größer als 1 ist, wurden eine oder mehrere alte Zeilen gelöscht, bevor die neue Zeile eingefügt wurde. Wenn die Tabelle mehrere eindeutige Indizes enthält und die neue Zeile die Werte verschiedener alter Zeilen in verschiedenen eindeutigen Indizes dupliziert, ist es möglich, dass eine einzelne Zeile mehrere alte Zeilen ersetzt.

Anhand der Anzahl der betroffenen Zeilen lässt sich leicht feststellen, ob durch REPLACE nur eine Zeile hinzugefügt wurde, oder ob durch REPLACE auch andere Zeilen ersetzt wurden: Prüfen Sie, ob die Zahl 1 (Addition) oder größer (Ersetzung) ist.

Derzeit ist es nicht möglich, eine Tabelle zu ändern und in einer Unterabfrage Daten aus derselben Tabelle auszuwählen.

Hier ist eine detailliertere Beschreibung des verwendeten Algorithmus (dieser Algorithmus wird auch für LOAD DATA...REPLACE verwendet):

1. Versuchen Sie, eine neue Zeile in die Tabelle einzufügen

2. Wenn ein Einfügen aufgrund eines doppelten Schlüsselfehlers für einen Primärschlüssel oder einen eindeutigen Schlüssel fehlschlägt:

  • a. Löschen Sie widersprüchliche Zeilen mit doppelten Schlüsselwerten aus der Tabelle
  • b. Versuchen Sie erneut, die neue Zeile in die Tabelle einzufügen

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, …

PS:

Drei häufig verwendete Anweisungen zum Einfügen von Daten in MySQL:

  • „insert into“ bedeutet das Einfügen von Daten. Die Datenbank überprüft den Primärschlüssel und meldet einen Fehler, wenn eine Duplizierung vorliegt.
  • „Ersetzen in“ bedeutet das Einfügen und Ersetzen von Daten. Die Tabelle muss einen Primärschlüssel oder einen eindeutigen Index haben. Wenn in der Datenbank bereits Daten vorhanden sind, werden diese durch neue Daten ersetzt. Wenn keine Daten vorhanden sind, ist die Wirkung dieselbe wie bei „Einfügen in“.
  • „Einfügen ignorieren“ bedeutet, dass die aktuellen neuen Daten ignoriert werden, wenn der gleiche Datensatz bereits vorhanden ist.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • Verwendung und Unterschiedsanalyse von „Ersetzen in“ und „Einfügen in“ beim Update doppelter Schlüssel 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
  • Detaillierte Beschreibung des MySQL-Ersetzens in der Verwendung

<<:  Eine kurze Analyse der Übereinstimmungspriorität des Nginx-Konfigurationsspeicherorts

>>:  Implementierung eines einfachen Timers in JavaScript

Artikel empfehlen

Detailliertes Tutorial zur Installation von Mysql5.7.19 auf Centos7 unter Linux

1. MySQL herunterladen URL: https://dev.mysql.com...

Das WeChat-Applet verwendet die Videoplayer-Videokomponente

In diesem Artikelbeispiel wird der spezifische Co...

So erstellen Sie ein stilvolles Webseiten-Design (Grafik-Tutorial)

„Großartig“ sind wahrscheinlich die beiden Worte, ...

Flex-Layout erreicht feste Anzahl von Zeilen pro Zeile + adaptives Layout

Dieser Artikel stellt das Flex-Layout vor, um ein...

Webdesign-Tutorial (1): Schritte und Gesamtlayout

<br /> Hinweis: Alle Texte, mit Ausnahme der...

Definieren Sie Ihre eigene Ajax-Funktion mit JavaScript

Da die von nativen JS initiierten Netzwerkanforde...

Linux-Datei-/Verzeichnisberechtigungen und Eigentümerverwaltung

1. Übersicht über Dateiberechtigungen und Eigentu...

Installations-Tutorial zur komprimierten Version von MySQL 8.0.11 unter Win10

In diesem Artikel finden Sie das Installations-Tu...

Beheben Sie den Nginx-Fehler „504 Gateway Time-out“

Studenten, die Websites erstellen, stellen häufig...

Detaillierte Erklärung zur Verwendung des MySQL-Sicherungsskripts mysqldump

In diesem Artikel wird das MySQL-Sicherungsskript...

Sprechen Sie über implizite Konvertierung in MySQL

Im Laufe der Arbeit werden Sie auf viele Fälle im...

Detailliertes Tutorial zur Tomcat-Installation und -Bereitstellung in Windows 10

Inhaltsverzeichnis 1 Konfiguration der Java-Umgeb...

Setzen Sie den Eingang auf schreibgeschützt über deaktiviert und schreibgeschützt

Es gibt zwei Möglichkeiten, schreibgeschützte Eing...