De REPLACE-instructie in MySQL is een uitbreiding van de SQL-standaard. Deze instructie werkt hetzelfde als de INSERT-instructie, behalve dat als een oude rij overeenkomt met het nieuwe record in de tabel voor een PRIMARY KEY of een UNIQUE-index, deze opdracht de oude rij verwijdert voordat de nieuwe rij wordt toegevoegd.
Deze verklaring is vereist wanneer we de bestaande records in de tabel willen bijwerken om ze bijgewerkt te houden. Als we hiervoor de standaard invoegquery gebruiken, geeft deze een dubbele invoer voor PRIMARY KEY of een UNIEKE sleutelfout. In dit geval zullen we de REPLACE-instructie gebruiken om onze taak uit te voeren. Voor het REPLACE-commando is een van de twee vereist mogelijk acties vinden plaats:
- Als er geen overeenkomende waarde wordt gevonden met de bestaande gegevensrij, wordt een standaard INSERT-instructie uitgevoerd.
- Als het dubbele record wordt gevonden, verwijdert de opdracht 'vervangen' de bestaande rij en wordt vervolgens het nieuwe record aan de tabel toegevoegd.
In de REPLACE-instructie werd de update in twee stappen uitgevoerd. Eerst wordt het bestaande record verwijderd en vervolgens wordt het nieuw bijgewerkte record toegevoegd, vergelijkbaar met een standaard INSERT-opdracht. We kunnen dus zeggen dat de REPLACE-instructie twee standaardfuncties uitvoert: VERWIJDEREN En INVOEGEN .
Syntaxis
Hieronder volgt de syntaxis van VERVANGEN verklaring in MySQL :
REPLACE [INTO] table_name(column_list) VALUES(value_list);
MySQL VERVANGEN Voorbeeld
wat is bijenkorf
Laten we de werking van de REPLACE-instructie in MySQL begrijpen met behulp van een voorbeeld. Eerst gaan we een tabel maken met de naam 'Persoon' met behulp van de volgende verklaring:
javascript laden
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 );
Vervolgens moeten we het record in de tabel invullen met behulp van de INVOEGEN verklaring zoals hieronder:
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');
Voer de uit SELECTEER instructie om de records te verifiëren die kunnen worden weergegeven in de onderstaande uitvoer:
Nadat we de gegevens in een tabel hebben geverifieerd, kunnen we elke oude rij vervangen door de nieuwe rij met behulp van de REPLACE-instructie. Voer de onderstaande instructie uit die de stad van een persoon wiens ID 4 is .
REPLACE INTO Person (id, city) VALUES(4,'Amsterdam');
Na de succesvolle uitvoering van de bovenstaande verklaring is het nodig om de gegevens van de tabel Persoon opnieuw op te vragen om de vervanging te verifiëren.
De waarde in de naam En e-mail kolommen zijn NUL nu. Dit komt omdat de REPLACE-instructie als volgt werkt:
- Deze instructie probeert eerst een nieuwe rij in de tabel Person in te voegen. Maar het invoegen van een nieuwe rij mislukt omdat de id = 4 al in de tabel bestaat.
- Deze verklaring verwijdert dus eerst de rij waarvan de id = 4 en voegt vervolgens een nieuwe rij in met dezelfde id en stad als Amsterdam. Omdat we de waarde voor de naam- en e-mailkolom niet hebben opgegeven, is deze ingesteld op NULL.
MySQL REPLACE-instructie om een rij bij te werken
We kunnen de volgende REPLACE-instructie gebruiken om rijgegevens bij te werken naar een tabel:
REPLACE INTO table SET column1 = value1, column2 = value2;
De bovenstaande syntaxis is vergelijkbaar met de UPDATE-verklaring behalve het trefwoord REPLACE. Houd er rekening mee dat we de WHERE-clausule niet kunnen gebruiken met deze instructie.
Voer het onderstaande voorbeeld uit waarbij de REPLACE-instructie wordt gebruikt om de stad van de genoemde persoon bij te werken Mike van Californië naar Birmingham .
REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham';
Na verificatie van de tabel kunnen we de volgende uitvoer zien:
Als we de waarde van de kolom niet hebben opgegeven in het SET-clausule , werkt deze opdracht als de UPDATE-verklaring , wat betekent dat de REPLACE-instructie de standaardwaarde van die kolom gebruikt.
MySQL REPLACE om gegevens uit de SELECT-instructie in te voegen.
We kunnen de volgende REPLACE INTO-instructie gebruiken om gegevens in een tabel in te voegen met de gegevensretouren van een query.
Java-tekenreeks naar json
REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition;
Houd er rekening mee dat de bovenstaande REPLACE-query vergelijkbaar is met de INVOEGEN IN SELECTIE stelling. Voer het onderstaande voorbeeld uit waarbij de REPLACE INTO-instructie wordt gebruikt om een rij binnen dezelfde tabel te kopiëren.
REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2;
Na verificatie van de tabel krijgen we de volgende uitvoer. In deze uitvoer kunnen we zien dat de kopie van een rij binnen dezelfde tabel met succes is toegevoegd.