logo

MySQL UDSKIFT

REPLACE-sætningen i MySQL er en udvidelse af SQL-standarden. Denne sætning fungerer på samme måde som INSERT-sætningen, bortset fra at hvis en gammel række matcher den nye post i tabellen for en PRIMARY KEY eller et UNIQUE indeks, slettede denne kommando den gamle række, før den nye række tilføjes.

Denne erklæring er påkrævet, når vi ønsker at opdatere de eksisterende poster i tabellen for at holde dem opdaterede. Hvis vi bruger standardindsættelsesforespørgslen til dette formål, vil det give en Duplicate-indtastning for PRIMÆR NØGLE eller en UNIK nøglefejl. I dette tilfælde vil vi bruge REPLACE-sætningen til at udføre vores opgave. Kommandoen REPLACE kræver en af ​​de to muligt handlinger finder sted:

  • Hvis der ikke findes nogen matchende værdi med den eksisterende datarække, udføres en standard INSERT-sætning.
  • Hvis duplikatposten findes, sletter kommandoen replace den eksisterende række og tilføjer derefter den nye post i tabellen.

I REPLACE-sætningen blev opdateringen udført i to trin. Først vil den slette den eksisterende post, og derefter tilføjes den nyligt opdaterede post, svarende til en standard INSERT-kommando. Således kan vi sige, at REPLACE-sætningen udfører to standardfunktioner, SLET og INDSÆT .

Syntaks

Følgende er syntaksen for ERSTATTE erklæring i MySQL :

 REPLACE [INTO] table_name(column_list) VALUES(value_list); 

MySQL REPLACE Eksempel

Lad os forstå, hvordan REPLACE-sætningen fungerer i MySQL ved hjælp af et eksempel. Først skal vi oprette en tabel med navnet 'Person' ved hjælp af følgende udsagn:

 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 ); 

Dernæst skal vi udfylde posten i tabellen ved hjælp af INDSÆT erklæring som nedenfor:

 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'); 

Udfør VÆLG erklæring for at bekræfte de poster, der kan vises i nedenstående output:

MySQL UDSKIFT

Efter at have verificeret dataene i en tabel, kan vi erstatte enhver gammel række med den nye række ved hjælp af REPLACE-sætningen. Udfør nedenstående erklæring, der opdaterer by for en person, hvis id er 4 .

 REPLACE INTO Person (id, city) VALUES(4,'Amsterdam'); 

Efter en vellykket udførelse af ovenstående sætning er det nødvendigt at forespørge dataene fra tabellen Person igen for at bekræfte erstatningen.

MySQL UDSKIFT

Værdien i navn og e-mail kolonner er NUL nu. Det er fordi REPLACE-sætningen fungerer som følger:

  • Denne sætning forsøger først at indsætte en ny række i Person-tabellen. Men indsættelsen af ​​en ny række mislykkedes, fordi id = 4 allerede eksisterer i tabellen.
  • Så denne sætning sletter først rækken, hvis id = 4, og indsæt derefter en ny række med samme id og by som Amsterdam. Da vi ikke har angivet værdien for navn og e-mail-kolonnen, blev den sat til NULL.

MySQL REPLACE-sætning for at opdatere en række

Vi kan bruge følgende REPLACE-sætning til at opdatere en rækkedata til en tabel:

 REPLACE INTO table SET column1 = value1, column2 = value2; 

Ovenstående syntaks ligner OPDATERING erklæring bortset fra søgeordet REPLACE. Det er at bemærke, at vi ikke kan bruge WHERE-klausulen med denne erklæring.

Udfør nedenstående eksempel, der bruger REPLACE-sætningen til at opdatere byen for den navngivne person Mike fra Californien til Birmingham .

 REPLACE INTO Person SET ID = 1, Name = 'Mike', City = 'Birmingham'; 

Efter kontrol af tabellen kan vi se følgende output:

10 af 10
MySQL UDSKIFT

Hvis vi ikke har angivet kolonnens værdi i SET klausul , fungerer denne kommando som OPDATERING erklæring , hvilket betyder, at REPLACE-sætningen vil bruge standardværdien for den kolonne.

MySQL REPLACE for at indsætte data fra SELECT-sætningen.

Vi kan bruge følgende REPLACE INTO-sætning til at indsætte data i en tabel med dataen retur fra en forespørgsel.

 REPLACE INTO table1(column_list) SELECT column_list FROM table2 WHERE condition; 

Det skal bemærkes, at ovenstående REPLACE-forespørgsel ligner INSERT I SELECT udmelding. Udfør nedenstående eksempel, der bruger REPLACE INTO-sætningen til at kopiere en række i den samme tabel.

 REPLACE INTO Person(Name, City) SELECT Name, City FROM Person WHERE id = 2; 

Efter kontrol af tabellen får vi følgende output. I dette output kan vi se, at kopien af ​​en række i den samme tabel er blevet tilføjet.

MySQL UDSKIFT